首先给厂商说句抱歉,测试demo的时候把demo搞挂了
漏洞文件:control/ajax/balance.php
看代码
变量 $arr 是可控的 而且没做任何过滤传入 updatetable()函数
跟进updatetable()函数
可见没做处理,跟进update()
这里就可以看出我们从url传过来的arr要是数组才行,才能控字段。
先看效果
可见真的进入了update语句,但是是否 显得鸡肋呢,因为只能更新shop表下的字段而已,也就是改改别人的店铺名啊之类的,要是能逃逸单引号多,这时候就开始fuzz一下发现,如果交一个单引号会经过两次转义,一次是系统全局的,另一次是update()函数里的escape_string()函数,测试一下
可见一个单引号会变成一个3个反斜杠加一个单引号。这时候我fuzz了一下
发现如果提交%bf'哈哈
哈哈 单引号成功逃逸出来。
这个时候就可以盲注了哈哈
至于你问我为什么 我也还不大清楚,我再还要分析看看,注:我的环境是apache+mysql5.5.4+php5.3。本来是要测dome的但是由于手抖没闭合好官网已经挂了 实在抱歉
poc
http://127.0.0.1:81/www/kppw/index.php?do=ajax&view=banner&id=1&a=1&arr[shop_name]=123%bf' where uid=1 and sleep(5)%23
成功盲注。
首先给厂商说句抱歉,测试demo的时候把demo搞挂了
漏洞文件:control/ajax/balance.php
看代码
变量 $arr 是可控的 而且没做任何过滤传入 updatetable()函数
跟进updatetable()函数
可见没做处理,跟进update()
这里就可以看出我们从url传过来的arr要是数组才行,才能控字段。
先看效果
可见真的进入了update语句,但是是否 显得鸡肋呢,因为只能更新shop表下的字段而已,也就是改改别人的店铺名啊之类的,要是能逃逸单引号多,这时候就开始fuzz一下发现,如果交一个单引号会经过两次转义,一次是系统全局的,另一次是update()函数里的escape_string()函数,测试一下
可见一个单引号会变成一个3个反斜杠加一个单引号。这时候我fuzz了一下
发现如果提交%bf'哈哈
哈哈 单引号成功逃逸出来。
这个时候就可以盲注了哈哈
至于你问我为什么 我也还不大清楚,我再还要分析看看,注:我的环境是apache+mysql5.5.4+php5.3。本来是要测dome的但是由于手抖没闭合好官网已经挂了 实在抱歉
poc
http://127.0.0.1:81/www/kppw/index.php?do=ajax&view=banner&id=1&a=1&arr[shop_name]=123%bf' where uid=1 and sleep(5)%23
成功盲注。