如何用SQLMap绕过WAF防护?
TOPIC SOURCE
SQLMAP详细参数详解
在实际渗透测试中,WAF(Web Application Firewall)往往是第一道防线,而SQLMap作为自动化注入工具,若能悄然穿透这层防护,将大幅提升信息获取效率。下面从技术细节出发,拆解几种常见的绕过思路,并配合对应的SQLMap参数示例。
认识WAF的拦截机制
大多数WAF会基于特征匹配、正则过滤和行为分析三类规则:
- 关键字过滤:如
union、select、sleep等。 - 异常请求体:异常的
Content-Type、过长的 URL 或者非法的 HTTP 方法。 - 行为阈值:短时间内大量相似请求触发速率限制或验证码。
SQLMap 绕过技巧概览
- 伪装 User‑Agent 与 Referer:使用
--user-agent、--referer让请求看似来自普通浏览器。 - Payload 变形:借助
--tamper脚本(如space2comment、between)把关键字拆解成等价但不被过滤的形式。 - 请求分块:
--chunked(若目标服务器支持)让 WAF 难以完整解析 HTTP 报文。 - 延迟与速率控制:
--delay与--timeout配合,规避速率检测。 - 自定义 Header:
--headers注入 X‑Forwarded‑For、X‑Real‑IP 等伪装字段,混淆来源。
实战示例
sqlmap -u "http://example.com/search.php?q=1"
--batch
--level=5 --risk=3
--tamper=space2comment,between
--user-agent="Mozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X)"
--referer="https://www.google.com/"
--delay=2
--threads=4
--random-agent
上述指令通过两层 tamper 脚本将 SELECT 关键字拆散为 S E L E C T,并用移动端 UA 迷惑部分基于 UA 的规则;--delay 与 --threads 的组合让请求速率保持在 WAF 的阈值以下。
进阶:利用代理链路混淆来源
当目标部署了高级行为分析(如机器学习模型)时,单一 IP 的请求仍然可能被标记。此时可以引入 --proxy 与 --proxy-file,让 SQLMap 轮流使用多个出口 IP;配合 --tor 更进一步隐藏真实网络路径。
综上所述,绕过 WAF 并非“一招就灵”,而是需要根据防护规则、业务特性和网络环境,灵活组合伪装、变形、速率控制等手段。熟练掌握这些技巧,才能在面对不断进化的防御体系时,仍保持渗透的主动权。

参与讨论
这方法试过,tamper脚本有时候会被新版WAF识破啊🤔
伪装成手机UA真的有用?我上次用安卓的还是被拦了
前几天刚搞完这个,确实折腾了好久,delay设太小直接IP被封
又是讲绕过的,能不能说说怎么判断目标用的是哪种WAF?
感觉还行,不过现在云WAF都带AI行为分析了,光改UA不够吧
hhh老手都懂,关键还是得配合手动fuzz,别全靠sqlmap
这个配置在Nginx+ModSecurity环境下能跑通吗?