sqlmap绕过waf注入的步骤与步骤详解

sqlmap绕过waf注入的步骤与步骤详解
最新回答
萌音草莓

2021-02-17 03:30:16

sqlmap绕过WAF注入的步骤主要包括:判断注入点、构造特殊Payload、使用sqlmap的Tamper脚本、优化延时参数、使用UNION查询、利用错误语法或时间戳、通过中间服务器绕过WAF

1. 判断注入点

  • 首先,确定目标网站是否存在SQL注入漏洞,并且这个漏洞点能够被sqlmap利用。WAF可能会阻止sqlmap的常规注入尝试,因此需要对目标进行初步探测。

2. 构造特殊Payload

  • 如果WAF或Web应用程序对用户提交的数据进行了严格过滤,需要构造特殊的Payload来绕过这些限制。例如,使用形如uid=if(1=1,sleep(5),1)的Payload,通过延时效果来确认注入是否成功。

3. 使用sqlmap的Tamper脚本

  • sqlmap提供了多种Tamper脚本,可以对Payload进行变形,以绕过WAF的检测。如space2comment.py脚本将空格替换为注释符,between.py脚本将<和>替换为between 0 and形式的注入语句。

4. 优化延时参数

  • 对于盲注,尤其是基于时间的盲注,需要调整延时参数。可以增加sleep()函数的延时时间,并设置--time-sec参数来指定sqlmap等待响应的最长时间。

5. 使用UNION查询绕过WAF

  • 构造UNION查询可能绕过WAF的检查。UNION查询可以将多个SELECT语句的结果合并在一起,从而绕过WAF对单个SELECT语句的限制。

6. 利用错误语法或时间戳

  • 尝试在SQL注入代码中使用错误语法或带有时间戳的查询,以欺骗WAF,使其误认为这是一个无效的或过期的请求。

7. 通过中间服务器绕过WAF

  • 如果直接注入被WAF阻止,可以考虑使用中间服务器来转发注入请求。通过编写原始请求的Python代码,将其放入SQLMidServer中,并在注入点的位置拼接sqlmap的Payload,由中间服务器将请求转发给目标服务器。