首页 游戏 软件 资讯 排行榜 专题
首页
数据库
SQL注入如何绕过WAF防火墙拦截_通过编码转换与特殊字符混淆绕过

SQL注入如何绕过WAF防火墙拦截_通过编码转换与特殊字符混淆绕过

热心网友
66
转载
2026-04-28

SQL注入如何绕过WAF防火墙拦截:编码转换与特殊字符混淆的艺术

URL编码和双重编码常失效,因WAF在解析阶段即完成多轮解码与规范化;真正有效的是利用WAF盲区如Unicode编码%u0027、十六进制0x27或数据库特有语法如MySQL条件注释/*!50700 SELECT*/。

SQL注入如何绕过WAF防火墙拦截_通过编码转换与特殊字符混淆绕过

SQL注入绕过WAF时,URL编码和双重编码为什么常失效

很多朋友一提到绕过WAF,首先想到的就是URL编码,甚至双重编码。但现实往往很骨感:为什么%2527这样的把戏经常失灵?核心原因在于,现代WAF(无论是ModSecurity这样的开源方案,还是主流的云WAF)在请求解析的早期阶段,就已经完成了URL解码,并且通常会进行多轮规范化处理。简单来说,你发送的%2527(即%27的二次编码),WAF会层层解码,最终看到的还是那个赤裸裸的单引号',该触发的规则一样会触发。

  • 那么,什么编码才真正有效?关键在于找到WAF解析链条上的“盲区”。例如,某些WAF规则集不处理%u0027这种Unicode编码形式。但这里有个陷阱:数据库得认才行。MySQL就不吃%u0027这一套,需要换成数据库本身支持的格式。
  • MySQL环境下,可以尝试0x27(十六进制字面量)来表示单引号字符,或者在特定上下文里直接用'。当然,前提是SQL语句的上下文允许这种十六进制字符串参与拼接。
  • 如果是PostgreSQL,可以试试E'\x27'(带转义的十六进制字符串),部分WAF的规则可能没有覆盖到E''这种特殊的字符串语法。
  • 所以,别再盲目套用%27%2527的公式了。一个实用的测试方法是:构造像id=1%2527%2520OR%25201%253D1%2520--这样的payload,观察响应。如果还是被直接拦截,那就基本可以断定,目标WAF已经解码到了原始字符,这条路走不通。

用注释符和空格变形绕过关键词检测

WAF的另一大武器是基于正则表达式的关键词匹配,比如UNION SELECTOR 1=1这类经典模式。好消息是,像MySQL、MariaDB这类数据库,对空白符和注释的容忍度极高,这给我们留下了操作空间。而且,不同数据库版本支持的注释语法也有细微差别,这恰恰是WAF规则难以全覆盖的地方。

  • 用注释代替空格:这是经典手法。例如,把SELECT username FROM users写成SELECT/**/username/**/FROM/**/users。如果WAF的正则规则只是简单地锚定SELECT\s+FROM,那么这种写法就能成功溜过去。
  • 利用MySQL条件注释:这是一个高级技巧。例如/*!50700 SELECT*/,其中的SQL语句只在MySQL版本号大于等于5.7.00时才会执行。这种数据库特有的语法,WAF的通用规则极少覆盖。
  • 使用非常规空白符:除了常见的空格%20,还可以尝试%09(水平制表符Tab)、%0a(换行)、%0c(换页)。这些比单纯的+号要隐蔽得多。不过要注意一点:PHP的$_GET超全局变量默认会把+号转换成空格,但会保留%09的原义,这点差异在构造payload时需要留意。
  • 注释符的选择:尽量避免使用-- (注意后面有个空格),可以改用#或块注释/*abc*/。部分WAF对行注释符#的过滤并不严格,尤其是当它出现在参数值末尾时。

利用函数别名与等价表达式替换敏感操作符

如果WAF采用的是黑名单机制,过滤了UNIONSELECTAND等关键词,那么思路就要转向寻找“语义等价但字面不同”的写法。目标是让数据库引擎能正确执行,同时让WAF的规则识别不出来。

  • 操作符替换:在MySQL中,逻辑AND完全可以用&&代替。对于AND 1这种布尔条件,甚至可以写成LIKE 'a'='a'这样的表达式来绕过检测。
  • 拆分关键词:对于UNION SELECT这样的组合,可以在中间插入注释,变成UNION/*foo*/SELECT。或者,用括号改变语法树结构,写成UNION (SELECT ...)
  • 列数探测的隐蔽方法:探测列数时,不一定非要暴力使用ORDER BY 100。可以尝试嵌套SELECT子查询并用JOIN连接,例如:SELECT * FROM (SELECT 1)a JOIN (SELECT 2)b JOIN (SELECT 3)c...。这种复杂的嵌套语法,WAF规则很少会去覆盖其中的逗号分隔细节。
  • 文件读取的绕过:当LOAD_FILE()函数被盯上时,可以尝试将文件路径转换为十六进制格式。例如:SELECT LOAD_FILE(0x2f6574632f706173737764)(对应/etc/passwd)。这样做既能绕过对常见路径字符串的检测,又避免了使用引号。

为什么堆叠注入(Stacked Queries)在多数场景下根本走不通

看到注入点有个分号;,很多人会兴奋地想到堆叠注入。但这里必须泼一盆冷水:WAF没有拦截分号,绝不代表后端应用程序能执行多条SQL语句。成败的关键,在于数据库驱动和应用程序接口(API)层是否允许执行多语句查询。

  • 以经典的PHP为例,古老的mysql_query()函数根本就不支持多语句执行。较新的mysqli_multi_query()函数虽然支持,但出于安全考虑,绝大多数Web应用在编码时并不会启用这个选项。所以,即使WAF放行了id=1; DROP TABLE users--这样的payload,PHP代码调用mysqli_query($conn, $sql)时,也会直接返回一个“Commands out of sync”错误。
  • 这个情况在其他语言中也类似。Python的pymysql库默认关闭多语句执行(multi=True)。Go语言的database/sql标准库同样不支持,除非进行显式配置。
  • 堆叠注入唯一比较常见的可行场景,可能是在使用sqlmap这类自动化工具进行渗透测试时。例如使用sqlmap --batch -p id --dbms=mysql --technique=S参数,工具会先用布尔盲注或时间盲注确认注入存在性,然后再尝试堆叠注入。但即便如此,成功率也完全取决于后端代码的配置,并非WAF放行就能成功。
  • 因此,不要把; SELECT当作万能钥匙。一个有用的判断方法是:仔细观察应用程序的错误信息,如果其中间出现了mysqli_num_rows()pg_fetch_array()这类函数名,其实就暗示了底层使用的数据库驱动类型,从而可以推断堆叠注入的可能性。

总而言之,一次成功的SQL注入绕过,实际上是WAF规则粒度、数据库特定版本语法以及应用程序驱动配置这三者交集的产物。最容易被忽略的一点是:WAF可能“聪明”地放过了你的SELECT语句,但后端代码在拼接SQL之前,可能用一个intval()函数就把输入强制转成了整数,导致所有字符型payload在第一步就被截断了。所以,首要任务是确认:你的输入,真的进入SQL拼接环节了吗?

来源:https://www.php.cn/faq/2316697.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Linux防火墙配置指南:使用IPSet与GeoIP精准拦截海外流量
系统平台
Linux防火墙配置指南:使用IPSet与GeoIP精准拦截海外流量

在服务器安全防护领域,拦截海外访问流量是一项广泛采用且效果显著的策略。然而,如何实现高效、稳定且易于维护的拦截方案,其中包含诸多技术细节与最佳实践。 直接给出核心结论:兼顾稳定性、性能与可维护性的最优方案,是结合使用 ipset 与 iptables。至于另一种方案——编译内核模块 xt_geoip

热心网友
05.20
银河麒麟系统开启SSH服务与远程连接配置教程
系统平台
银河麒麟系统开启SSH服务与远程连接配置教程

许多用户在银河麒麟V10桌面操作系统上完成环境部署后,常会遇到一个典型问题:如何从其他计算机远程连接至该系统?尽管系统运行正常,但使用SSH客户端连接时却频繁出现超时或拒绝访问的错误。这通常是由于几个关键配置环节未就绪所致——可能是SSH服务未安装、防火墙规则限制,或是身份验证设置未正确开启。 无需

热心网友
05.17
Linux防火墙iptables配置规则详解与高级设置教程
系统平台
Linux防火墙iptables配置规则详解与高级设置教程

iptables规则配置后不生效,最常见的原因是规则顺序错误:使用-A INPUT将规则追加到链尾时,若链中存在DROP规则或默认策略为DROP,新规则将无法被匹配;应改用-I INPUT 1优先插入规则。同时需注意,filter表不处理地址转换,DNAT SNAT操作必须使用-t nat指定nat

热心网友
05.17
Linux防火墙关闭与特定端口开放配置指南
系统平台
Linux防火墙关闭与特定端口开放配置指南

在Linux系统中配置防火墙与开放端口,许多用户误以为只需简单“开启”或“关闭”即可。然而实际运维中,即便停用了firewalld或ufw服务,应用程序仍可能无法被外部访问。这通常源于服务监听配置、云平台安全组策略或SELinux安全机制等多层因素。因此,正确的操作流程是:首先根据您的Linux发行

热心网友
05.17
Ollama本地部署与Cursor编辑器连接配置指南
AI资讯
Ollama本地部署与Cursor编辑器连接配置指南

在 Cursor 编辑器中集成本地大模型进行代码编写,能显著提升开发效率。然而,许多用户在配置 Ollama 后,常遇到 Cursor 无法连接的问题,提示连接失败或模型无响应。这通常并非模型本身的问题,而是 Cursor 未能正确识别到本地运行的 Ollama 服务。本文将提供一套完整的排查与解决

热心网友
05.17

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

iPhone防抢功能详解:检测抢夺后自动锁定如何保护手机安全
科技数码
iPhone防抢功能详解:检测抢夺后自动锁定如何保护手机安全

手机被抢后,最令人担忧的往往不是设备本身的损失,而是手机在解锁状态下被他人获取,导致个人隐私泄露与账户安全风险。近期有消息指出,苹果公司正在研发一项全新的iPhone防抢夺安全功能,旨在解决这一核心痛点:当系统检测到设备正被人从用户手中突然夺走时,将自动触发锁定机制,立即保护机内数据。 这项功能实际

热心网友
05.27
COMPUTEX精英电脑新品发布 多款WCL平台迷你主机亮相
科技数码
COMPUTEX精英电脑新品发布 多款WCL平台迷你主机亮相

COMPUTEX 台北国际电脑展即将于下周盛大开幕,作为全球科技产业的重要风向标,各大厂商均已蓄势待发。精英电脑(ECS)近日正式确认参展,并将在展会上重点展示其主板与迷你电脑两大核心产品线,集中呈现公司在AI智能体、边缘计算解决方案、高效数据处理以及智能医疗与嵌入式应用等前沿领域的技术布局与创新成

热心网友
05.27
归环手游职业选择指南 三大基础职业特点与推荐
游戏资讯
归环手游职业选择指南 三大基础职业特点与推荐

游戏三大职业定位清晰。洞察者擅长探索解谜,核心技能可发现隐藏线索,适合剧情玩家。灵能使者侧重控制与团队辅助,是团队战术核心。破界战士拥有高攻防,主打正面战斗与高效输出。职业选择取决于玩家偏好解谜、策略或战斗的游玩风格。

热心网友
05.27
三星工会加薪诉求引争议 李在明批其要求缺乏底线
科技数码
三星工会加薪诉求引争议 李在明批其要求缺乏底线

韩国总统李在明批评三星电子工会要求将半导体部门15%营业利润作为绩效奖励“过分”,强调利润应分享给投资者和股东。劳资调解失败后,劳动部长将主持恢复谈判,以避免事态升级。这场纠纷触及利润分配等深层议题,其结果可能影响韩国未来劳资政策。

热心网友
05.27
007初露锋芒Steam在线峰值破5.5万人
游戏资讯
007初露锋芒Steam在线峰值破5.5万人

《007:初露锋芒》在Steam平台获“特别好评”并登顶全球销量榜,但在线峰值仅约5 5万人,与十年前同类作品相近。尽管玩家评分高达91%,销量表现强劲,在线数据却显平淡。这反映单机3A游戏当前常态:首发靠IP与品质吸引购买,但维持长期社区热度面临更大挑战。

热心网友
05.27