这关有点意思,有一点需要事先注意,这关玩的是login.php而不是默认的index.php
再注入之前需要先了解一下HPP(HTTP Parameter Pollution),详情参照这篇 http://blog.csdn.net/eatmilkboy/article/details/6761407
对于这关的WAF需要了解一点就是,WAF和web程序的业务逻辑是无关的,WAF只是起这简单的参数过滤作用而已,这样就可以解释为什么sql语句用的id而WAF判断的是id1
换句话说,没有了WAF就是less1的东西了
看一下过滤
$_SERVER['QUERY_STRING'] 获取的是?后面的值
java_implimentation函数用于提取id参数的值返回赋值给id1,然后用whitelist函数判断是否全为数字
^ 起始位置
$ 结束位置
/d 数字
+ 重复1次以上
那么构造这样的请求
http://192.168.136.128/sqli-labs-master/Less-29/login.php?id=1&id=2
http://192.168.136.128/sqli-labs-master/Less-29/login.php?id=1&id=0' union select 1,2,3%23