Helloworld

実行可能ファイル helloworld.exe が与えられた。

Ghidra で逆コンパイルして観察すると、 entry関数から以下のFUN_004010a0関数がmain関数のような感じで呼び出されていることがわかった。

An executable file helloworld.exe was given.

Decompiling via Ghidra and reading, I found that this function FUN_004010a0 is called from the function entry as if it is calling the main function.

FUN_00401040.c

この関数の最後の部分には、以下の怪しいデータがあった。

The last part of the function had this interesting data:

local_c = 0x2b2d2f3e; uStack40 = 0x2b3c2835; uStack36 = 0x2f28112b; uStack32 = 0x2f113c27; local_8 = 0x33; uVar3 = 0; local_1c = 0x3d112a20; uStack24 = 0x3c3b2d2b; uStack20 = 0x372d112b; uStack16 = 0x3d3c2b2c;

このデータをCyberChefで文字列に変換し、 さらにこの部分の下で何かに0x4eをXORしていたので、同様に0x4eをXORした。

I converted this data to strings via CyberChef. Also, seeing the function is applying exclusive-or with 0x4e to something, I applied exclusive-or with 0x4e to the strings.

Fork, 6 more - CyberChef

すると、以下の結果が得られた。

This process resulted in this:

pace {fre e_fa ir_a } N nd_s ecur e_cy bers

これらをそれっぽく並べて flag を補うことで、flagが得られた。

I obtained the flag by putting these in proper order and adding flag.

flag{free_fair_and_secure_cyberspace}

setodaNote CTF