2024-05-09|閱讀時間 ‧ 約 24 分鐘

picoCTF - Static ain't always noise 實戰解析

前言

熱騰騰的文章又來囉~

在開始之前想先聊聊為甚麼我想些 picoCTF 這系列的文章。

會寫這系列的文章除了因為不知道要寫甚麼以外,還有因為,其實 CTF 的 writeup 很少中文版的。雖然有可能是我單純沒看到,不過,我也想藉此來宣傳「資安是很有趣的東西」這樣的概念。




Static ain't always noise

題述


打開 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 的用法了。


駭客們正監聽著你的電腦,看你有沒有幫這篇按讚😎

分享至
成為作者繼續創作的動力吧!
內容總結
picoCTF平台
5
/5
© 2024 vocus All rights reserved.