今天遇到一個常見的 CTF 題型:
不要執行可疑檔案,靜態檢查就找出 flag,流程很簡單、也很實用:
解題步驟與思路
前面簡單的步驟就不再花篇幅說明了,有興趣或不清楚的同學可以查看前面的文章。
一、列出目錄內所有檔案的型態:file * | sed -n '1,200p'
為什麼這麼做?
"file"可以告訴你每個檔案是文字、ELF 可執行、zip、目錄、圖片等。
而知道型態能幫你決定接下來用哪種工具檢查(例如:若是圖片,檢查 exif 或做 steg;若是 ELF,就用 strings、readelf)。
二、確認系統上 strings 的路徑:
command -v strings || echo "strings not found in PATH"
系統會回傳像"/usr/bin/strings"之類的路徑,接下來就用那個絕對路徑呼叫,避免混淆(有時目錄裡可能剛好也有叫 strings 的檔案)。
三、在每個檔案上用 strings 搜尋 picoCTF:
為什麼這麼做?
"strings"會抽出二進位檔或其他檔案裡的可讀 ASCII/Unicode 片段。flag 常常直接被放在可讀字串中,所以這一步非常快速且高命中率。
"-n 8"指只抓長度≥8 的字串,以降低雜訊。
答案就被你找出來啦!!
小小心得
以上就是我今天的過程:
用"file"一次確認每個檔案的型態,接著用"strings"在所有檔案裡搜尋 picoCTF、flag 等關鍵字,最後就定位到包含 flag 的檔案並讀出內容。
方法簡單但非常實用——特別是當題目明確要求不要執行檔案時。