ShinobiMind

basketball player and hacker will keep be childish.

Trend Micro CTF 2017 Reversing 100 writeup

Challenge

問題文をメモし忘れてしまいました、、、
暗号化と圧縮したファイルを解凍するとpocketという名前のzipファイルが現れます。binwalkでジャカジャカ展開していきます。

# binwalk pocket  
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, at least v2.0 to extract, compressed size: 39281, uncompressed size: 39271, name: biscuit  
39371         0x99CB          End of Zip archive

すると、biscuit1とbiscuit2というファイルが展開されます。

# binwalk biscuit1  
 DECIMAL       HEXADECIMAL     DESCRIPTION
 --------------------------------------------------------------------------------
 0             0x0             Microsoft executable, portable (PE)

# binwalk biscuit2 
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Zip archive data, encrypted at least v2.0 to extract, compressed size: 69, uncompressed size: 64, name: biscuit4
107           0x6B            Zip archive data, encrypted at least v2.0 to extract, compressed size: 12778, uncompressed size: 30935, name: biscuit5
12923         0x327B          Zip archive data, encrypted at least v2.0 to extract, compressed size: 13747, uncompressed size: 14378, name: biscuit3
26870         0x68F6          End of Zip archive

biscuit2は暗号化されたzipファイルのようです。その暗号鍵がbiscuit1から得られるのでしょう。biscuit1は32bitのPEファイルなので、まずwindowsから起動してみます。

.\biscuit1.exe  
Please find sweets name starting from m for biscuit2.

はい、予想通り暗号鍵があると教えてくれました。mから始まるスイーツの名前だそうです。PEviewで見ると、"GetCommandLineA"が見つかり、何かコマンドライン引数を引っ張ってるのかなぁと予想しながら(最近、リバースエンジニアリングバイブルで勉強したので)デバッガーに食わせます。 ollydbgを使って処理を追っていくと、"macaron"という文字列が見当たります。これが暗号鍵でした。
biscuit2を解凍すると、buscuit3, buscuit4, buscuit5が展開されます。 biscuit4はテキストファイルで次のように書かれています。

# cat biscuit4 
Please create flag.

hint:

Flag = TMCTF{biscuit3_ biscuit5}

どうやら、buscuit3とbuscuit5から答えを持ってこればFlagが得られそうです。それぞれのファイルは次のようです。biscuit3は展開します。

# binwalk biscuit3 
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             JPEG image data, JFIF standard 1.01
382           0x17E           Copyright string: "Copyright (c) 1998 Hewlett-Packard Company"
14253         0x37AD          Zip archive data, at least v1.0 to extract, compressed size: 5, uncompressed size: 5, name: biscuit.txt
14356         0x3814          End of Zip archive  

# binwalk biscuit5 
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)

biscuit3を展開するとbiscuit.txtが出てきて、中にはcreamと書かれています。”cream”がbiscuit3の答えです。

biscuit5の方はbuiscuit2と同様に"GetCommandLineA"に注目しながら、ollydbgで解析していくと途中で"choux"という文字列が現れます。これがbiscuit5の答えです。

Answer

ようやくFlagがgetできました。TMCTF{cream_ choux}
と思いきや、ヒントが間違っていたようです。
TMCTF{choux_cream}