宇宙免责声明!!!
本推文提供的信息、技术和方法仅用于教育目的。文中讨论的所有案例和技术均旨在帮助读者更好地理解相关安全问题,并采取适当的防护措施来保护自身系统免受攻击。
严禁将本文中的任何信息用于非法目的或对任何未经许可的系统进行测试。未经授权尝试访问计算机系统或数据是违法行为,可能会导致法律后果。
作者不对因阅读本文后采取的任何行动所造成的任何形式的损害负责,包括但不限于直接、间接、特殊、附带或后果性的损害。用户应自行承担使用这些信息的风险。
我们鼓励所有读者遵守法律法规,负责任地使用技术知识,共同维护网络空间的安全与和谐。
本文由Zer0 Sec内部成员-Tim供稿
- URL:http://xxxx/login?flag=false
- 一个单引号报错
- 两个单引号正常。
- 通过简单判断初步确定search参数存在注入。
- 接下来构造语句进行闭合注入:
- 发现存在拦截,接下来尝试绕过。
- 这里用了垃圾参数数据绕过了,发现已经不拦截了,并且把sql语句也泄露出来了。这里根据报错也是看出来是MySQL数据库了,想到用MySQL的报错注入。
- 但是很可惜,括号被编码,无法正常执行函数了。所以报错注入失败。连一些if()之类的函数都用不了。但是还是有办法的,这里尝试构造两个布尔值0和1配合like进行盲注数据库名。
- 这里构造出来了0和1,具体paylaod如下
1'+||+1=1+||'和1'+||+1=2+||'
- 到这里0和1两种状态就出来了,然后进行盲注。因为前面括号已经被转义了,所以很多函数用不了,到这里我的想法就是用CURRENT_USER和@@VERSION来注用户名和版本,尝试注入出数据。
- 一开始的payload是这样:
1'+||+CURRENT_USER+like+'%'+||'
- 但是根据回显,这个payload是有问题的,就是结果恒为真,那这样肯定不对。这里当时卡了很久,不用%没法模糊出数据。后面想了一下它是MySQL,所以用户名不会是root@localhost吧,然后我就用下面这个payload试了一下:
1'+||+current_user='root'+||'
- 正常
- 报错,到这里就可以确定它的current_user应该就是root@localhost。
原文始发于微信公众号(Zer0 sec):团队内部edu挖掘-sql注入Bypass实战案例
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论