1.大小写绕过
例如:拦截union。我们可以使用Union或UNion等方式绕过。
2.编码绕过
同样假设WAF检测关键字union,可以用U的16进制编码%55来代替U,组合成%55nion来尝试绕过。结合大小写也可以绕过WAF。
3.注释绕过
适用于WAF只阻断一次危险语句,而没有阻断整个查询。
我们可以在过滤语句前加注释,使其过滤掉注释中的关键字。比如WAF过滤union和select,对于语句/?id=1+union+select+1,2,3/*,构造语句/?id=1/*union*/union/*select*/select+1,2,3/*。
4.分隔重写绕过
适用于WAF采用正则表达式的情况,会检测出所有敏感字。
/?id=1+un/**/ion+sel/**/ect+1,2,3-
至于重写绕过,适用于WAF过滤了一次的情况,可以构造ununionion语句,在过滤一次union之后就可以实现查询了。
?id=1 ununionion select 1,2,3-
5.同功能函数替换
substring()可以用mid(),substr()来替换。
ascii()编码可以用hex(),bin()来替换。
时间盲注benchmark()可以用sleep()来替换。
最后,SQLmap绕过脚本存放目录:sqlmap/tamper