ELF

ファイル elf が与えられた。

このファイルをバイナリエディタで開いてみると、最初の部分が58 58 58 58 (XXXX) となっていたので、 ELFファイルのマジックナンバー 7F 45 4C 46 に書き換えた。

書き換えたファイルをTDM-GCCobjdumpで逆アセンブルすると、 以下の怪しいデータが見つかった。

A file elf was given.

Opening the file with a binary editor, I found that the first part of the file is 58 58 58 58 (XXXX). Seeing this, I modified this part to the magic number for ELF files 7F 45 4C 46.

After doing this modification, I disassembled the file via objdump in TDM-GCC, finding this interesting data:

113d: 48 b8 4e 44 49 4f 53 movabs $0x465d5a534f49444e,%rax 1144: 5a 5d 46 1147: 48 ba 77 45 49 43 41 movabs $0x55494a4143494577,%rdx 114e: 4a 49 55

さらに、Ghidraで逆コンパイルしてみると、 entry関数から__libc_start_main関数がFUN_00101135関数などを引数として呼び出されていた。
FUN_00101135関数は以下のものであり、何かに0x28をXORしている様子がみられた。

Also, I decompiled the file via Ghidra, finding that the function entry is calling the function __libc_start_main with the function FUN_00101135 as one of the arguments.
This is the function FUN_00101135. I found it applying exclusive-or with 0x28 to something.

FUN_00101135.c

CyberChefで得られたデータを文字列に変換し、0x28とのXORをとることで、flagが得られた。

I obtained the flag by converting the data to strings and applying XOR with 0x28 via CyberChef.

Reverse, From Hex, Reverse, XOR - CyberChef

flag{run_makiba}

setodaNote CTF