MIPS架構的CTF逆向題--SUCTFbabyre題目writeup
一,這道題剛拿到的時候我是直接載入IDA 結果分析的一團糟
比賽結束之後 看了好多師傅wp 才知道mips架構的專用工具怎麼用,比如retdec,jeb-mips
開始是打算用retdec的,結果線上版的https://retdec.com/decompilation/不能用了 感覺windows下不好裝 有時間補坑
就選擇了jeb-mips(試用版)
扯一點怎樣下載 就是https://www.pnfsoftware.com/jeb/demomips這個連結 填寫好個人資訊 就會發下載地址到郵箱
二,如果想要在linux裡面執行 就必須安裝qemu了 我記得好像是直接 sudo apt-get install qemu 就好了
正常的話直接終端執行qemu-mips babyre
但是這個檔案是32bit 小端序 那麼就得用qemu-mips babyre 可是提示我檔案損壞。。
三,既然執行不了 就直接載入jeb-mips算了
可以看到關鍵字串flag is 等等 雙擊任意一個進入
四,接著按大寫X 檢視交叉引用 可以看到都在main函式 雙擊任意一個
再按tab鍵反編譯 可以看到sub_400780()就是關鍵 但是試用版是不支援反編譯它的
根據師傅的部落格 就是一個替換了base64編碼表的加密函式
下面那個if判斷可以摳出來要解密的eQ4y46+VufZzdFNFdx0zudsa+yY0+J2m
五,那就只好IDA載入 然後找到編碼表就好(下邊截圖省略中間部分)
R9Ly6NoJvsIPnWhETYtHe4Sdl+MbGujaZpk102wKCr7/ODg5zXAFqQfxBicV3m8U
最後寫個指令碼 本來自己寫了有 但是發現有師傅https://wangyx-max.github.io/MIPS%E5%90%88%E9%9B%86/有更簡單的
import string
import base64
my_base64table = "R9Ly6NoJvsIPnWhETYtHe4Sdl+MbGujaZpk102wKCr7/0Dg5zXAFqQfxBicV3m8U"
std_base64table ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
s = "eQ4y46+VufZzdFNFdx0zudsa+yY0+J2m"
s = s.translate(string.maketrans(my_base64table,std_base64table))
print base64.b64decode(s)
#SUCTF{wh0_1s_{0ur_d4ldy}
參考連結:
https://wangyx-max.github.io/MIPS%E5%90%88%E9%9B%86/
https://github.com/Mem2019/Mem2019.github.io/tree/master/writeups/suctf2018#babyre