[re]go語言逆向:2020網鼎杯朱雀組re what wp

[re]go語言逆向:2020網鼎杯朱雀組re what wp

題目分析

那道題目,是一個linux的逆向,直接輸入key:
在這裏插入圖片描述
然後逆向分析一下,是一個go語言開發的程序,看着比較複雜,但是字符串什麼的都沒有混淆,可以通過“please input the key:”字符串找到入口:
在這裏插入圖片描述
然後還可以看到一個類似base64串一樣的字符串,感覺像是校驗用的,繼續往下看找到輸入,和輸入後的校驗:
在這裏插入圖片描述
可以看到輸入校驗之後,錯誤會直接提示error,成功會有一大波操作,簡單看了下感覺應該是對開頭的flag字符串進行解碼或者解密操作,然後輸出flag:
在這裏插入圖片描述

解題

所以現在差不多知道,我們只要把key輸入正確,那麼就會獲得正確的flag,所以要分析一下關鍵的main_encode函數:
在這裏插入圖片描述
根據裏面的函數名(base64xxxxxx),和字符串(XYZFGHI2+/Jhi345jklmEnopuvwqrABCDKL6789abMNWcdefgstOPQRSTUVxyz01)

我們懷疑這是一個魔改的base64編碼程序,將base64的編碼表替換了,將原本的編碼表(ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/)替換成了(XYZFGHI2+/Jhi345jklmEnopuvwqrABCDKL6789abMNWcdefgstOPQRSTUVxyz01),然後對輸入內容進行base64編碼之後與"nRKKAHzMrQzaqQzKpPHClX"作比較。那麼我們寫個腳本還原一下,因爲只是替換了編碼表,所以我們根據編碼表順序替換回來即可:

exp

new="XYZFGHI2+/Jhi345jklmEnopuvwqrABCDKL6789abMNWcdefgstOPQRSTUVxyz01"
old="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
result="nRKKAHzMrQzaqQzKpPHClX"

keyb64=""
for i in result:
    keyb64+=old[new.find(i)]
print keyb64

在這裏插入圖片描述
輸出內容:V2hhdF9pc19nb19hX0FfSA

去網站base64解碼一下:
在這裏插入圖片描述
後面亂碼了,因爲base64有補齊嘛,加上=或者==試一下,結果加上==時成功了:
在這裏插入圖片描述
所以key爲:What_is_go_a_A_H

輸入程序中,成功輸出flag:
在這裏插入圖片描述
flag{e252890b-4f4d-4b85-88df-671dab1d78f3}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章