CTFlearn – POST Practice

題目:https://ctflearn.com/challenge/114

提示說要使用 POST 才能得到對應的資料,因此嘗試了:

fetch('/post.php', { method: 'POST' })

但仍得到一樣的回應,不過在 developer tools 看到了 HTML 註解,知道要送額外的資料,因此再次嘗試了:

fetch('/post.php', { method: 'POST', body: JSON.stringify({ username: 'admin', password: '71urlkufpsdnlkadsf' }) })

這次仍是相同的回應,判斷可能是資料形態的問題(JSON v.s. FormData),調整以後再次嘗試:

const data = new FormData()

data.append('username', 'admin')

data.append('password', '71urlkufpsdnlkadsf')

fetch('/post.php', { method: 'POST', body: data })

這次就成功得到本題的 flag。

CTFlearn – Wikipedia

題目:https://ctflearn.com/challenge/168

提示是 Wikipedia 和一組 IP 地址,原本猜測是訪問該 IP 地址取得進一步資訊,但測試後並無法訪問,而 Wikipedia 每次的編輯紀錄都會留下 IP 地址,因此朝這個方向嘗試,搜尋後即找到了對應 IP 地址的編輯紀錄,flag 也在該次編輯變更中。

CTFlearn – Where Can My Robot Go?

題目:https://ctflearn.com/challenge/107

Where do robots find what pages are on a website?

看到此提示想到是網站的 sitemap,通常 sitemap 會列出網站可以訪問的所有網址清單,比如本網站的 sitemap,但經訪問 https://ctflearn.com/sitemap.xml 後,這是一個不存在的網址,因此這方向是錯的。

另一個可以告知爬蟲的是 robots.txt,訪問 https://ctflearn.com/robots.txt 後看到有一個 Disallow 的頁面,也正好符合另一個提示:

What does disallow tell a robot?

訪問 robots.txt 裡面 disallow 的頁面後即可拿到本題的 flag。

CTFlearn – Base 2 2 the 6

題目:https://ctflearn.com/challenge/192

本題題目中有提到是編碼,而再根據標題,原先猜測是 base62 的編碼,測試後無法正確解碼,因此改成 base64,就能順利得到本題的 flag 。

Base{NM} 的編碼主要用途是將二進位形式的資料轉換成可顯字元的文字,以用於傳輸等用途,可以參考維基百科的相關介紹:Base64Base58

CTFlearn – Taking LS

題目:https://ctflearn.com/challenge/103

檔案:

本題是一個 zip 壓縮檔,如果使用的是 Windows 系統,解壓縮後會看到一個 . 開頭的資料夾(.ThePassword),但如果是 Unix 系統,比如 macOS,解壓縮後透過 Finder 查看則預設不會看到此資料夾,因為開頭為 . 代表是隱藏的檔案或資料夾代,所以預設不顯示,如果是在 command line 透過 ls 來查看,則需要加上 -a 參數。

當知道怎麼查看隱藏的資料夾或檔案後,就可以在解壓縮的資料夾裡面找到 PDF 的密碼,進而找到本題的 flag 。

CTFlearn – Forensics 101

題目:https://ctflearn.com/challenge/96

本題只提供一個圖片檔,那麼 flag 肯定在此圖片中,第一個想到可能藏資訊的地方是 EXIF,但並沒有看似 flag 的資訊。

從 EXIF 沒找到 flag,下一步猜測可能是直接藏在 binary 中,因此透過 hex dump 等工具來直接查看檔案的 hex 值。

Bingo,找到 flag 了。

除了上述方式,還有可能透過 invisible watermark 來藏文字,但這就會因實作方式限制只有特定工具可以反解回來,比如:https://github.com/ShieldMnt/invisible-watermark