新手一枚,如有錯誤(不足)請指正,謝謝!!
題目下載:下載地址
參考資料:
base16,base32,base64 編碼方式的通俗講解
Base16,Base32,Base64編碼的介紹
IDA載入,找到main函數
Buf爲讀入的字符串,如果sub_401480()函數的返回值等於1的話則輸出成功
則進入sub_401480()查看
所以先看看sub_401070()函數中對v1做了怎樣的變換
下面是Base32加密,可參考文章Base16,Base32,Base64編碼詳細學習
然後分析一下sub_401000()函數,主要是對內存中字符串進行處理
也就是一個base32加密,字符集是zYxWvUtSrQpOnMlKjIhGfEdCbA765321
加密後的密文是nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7===
然後開始寫python腳本
import base64
origin = "nAdtxA66nbbdxA71tUAE2AOlnnbtrAp1nQzGtAQGtrjC7==="
biao = str.maketrans("zYxWvUtSrQpOnMlKjIhGfEdCbA765321","ABCDEFGHIJKLMNOPQRSTUVWXYZ234567")
flag = base64.b32decode(origin.translate(biao))
print(str(flag,'utf-8'))
最終flag爲flag{f1ag_1s_enc0de_bA3e32!}