2020年DASCTF六月團隊賽 REVERSE Magia
2020年DASCTF六月團隊賽 REVERSE Magia
IDA靜態分析
程序爲32位Windows程序,拖入IDA3Pro分析
字符串輸入檢測
輸入字符串後進入sub_403290()函數檢測,滿足以下條件:
1.字符串必須爲32位。
2、第1、2、3、4、32位分別爲‘N’、‘e’、‘p’、‘{’、‘}’。
不滿足,則退出。滿足則進入下一步檢測。
字符間邏輯檢測
依次對第一個字符與最後一個、第二個字符與到數字二個、第三個與倒數第三…第16個與第32個,兩個字符滿足以下條件:
設key爲字符串,i(0-16)爲字符串的下標
1.key[i] ^ key[-(i+1)]
,依次等於:
0x33 0x00 0x15 0x09 0x0B 0x36 0x06 0x0C 0x02 0x3A 0x2C 0x08 0x31 0x0B 0x37 0x0C
2 .key[i] & key[-(i+1)]
,依次等於:
0x4C 0x65 0x60 0x72 0x64 0x49 0x70 0x63 0x6C 0x45 0x53 0x61 0x4E 0x64 0x48 0x61
3.key[i] & 0xf
,依次等於:
0x0E 0x05 0x00 0x0B 0x0D 0x09 0x02 0x03 0x0C 0x05 0x0F 0x01 0x0E 0x04 0x0F 0x0D
4.key[-(i+1)] & 0xf
,依次等於:
0x01 0x08 0x0F 0x0F 0x09 0x03 0x0F 0x0E 0x0F 0x04 0x0F 0x06 0x02 0x05 0x05 0x0D
根據以上邏輯關係可以爆破出input:
根據題目中提示的格式爲
abcd_efgh_...
可確定爲:
Nep{mircle_and_maho_is_not_free}
輸入驗證:
說明正確,但提示:
It_is_that_true?
這還不是flag。
繼續IDA分析
輸入驗證正確後,首先對word_403006的數據進行了計算處理
然後將sub_403000();作爲函數調用。word_403006與輸入的字符串進行計算轉換後轉換爲執行代碼。
利用XDBG進行動態分析
text:004019F6 call sub_403000
,在004019F6出下斷,跟蹤,經過幾個循環
sub_403000爲生成flag的函數,在函數中跟蹤運行。
跟蹤到地址00403221
處在0018FE70
處找到生成的flag:8b272473500a451286ab225413f1debd