1. 程式人生 > >MIPS架構的CTF逆向題--SUCTFbabyre題目writeup

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

https://www.cnblogs.com/nww-570/p/8948371.html