熱騰騰的文章又來囉~
在開始之前想先聊聊為甚麼我想些 picoCTF 這系列的文章。
會寫這系列的文章除了因為不知道要寫甚麼以外,還有因為,其實 CTF 的 writeup 很少中文版的。雖然有可能是我單純沒看到,不過,我也想藉此來宣傳「資安是很有趣的東西」這樣的概念。
打開 static 檔案後會發現裡面一推亂碼,而 BASH script下載下來後是一個叫 ltdis.sh 的檔案,裡面有一串看不懂的程式碼
好,所有該看的都看完了,我們開始解題吧~。
看到一推亂碼我的第一反應是用 linux 中的指令----strings
。
官方的說法是說它可以幫我映出檔案裡可以印出的字元,不過,個人使用起來是覺得它本身有點將 binary 解碼的感覺。
不管如何用strings
空格 static,enter 按下去後會跑出一推看似比較看得懂的英文字。前後找一下就可以看到 flag 了。
如果怕慢慢找眼睛會花掉,可以在後面加一行|grep pico
意思就是我們要從strings
輸出的文字中找含有 pico 的字串。
當然,我想這應該也不是作者想要的方式,畢竟我們連第二個檔案都沒用到。
因此,用 google 大神查了一下看到了第二種解法。
首先,我們要了解地個檔案室甚麼牛鬼蛇神。
其實,從檔名就可以知道它是 bash 腳本,一個 linux 裡很常見的程式語言。不過,因為我沒學過😅,所以我請 AI 幫我解讀了一下裡面的內容,如下。
用於反組譯二進制文件並從中提取字符串。以下是腳本的主要步驟:
objdump
命令對指定的二進制文件進行反組譯,只針對.text
段落。$1.ltdis.x86_64.txt
是否非空。strings
命令從二進制文件中提取字符串並附上文件偏移量。簡單來說,它將檔案反組譯後會用strings
指令處理過後再輸出。跟我們在做的事情有點像呢。
不過在我們下./ltdis.sh
後他跑出 Permission denied,這個原因大機率是權限不符,所以我們要再下一個指令sudo chmod +R 777
(+R是遍歷所有子目錄,理論上是不用,不過別人的writeup有用到我就把它秀給大家看),這樣我們就可以取得 ltdis.sh 的所有權限了。
將要反組譯的檔案 static 放在./ltdis.sh
後面-->./ltdis.sh static,
我們就開心的拿到 flag 啦~。
其實,這題是許多在學 linux 基礎指令時會看到的類似題型,所以如果還想在練習看看其他題可以到picoCTF上輸入 strings it。這題就單純是在考 strings 的用法了。
駭客們正監聽著你的電腦,看你有沒有幫這篇按讚😎