KITCTFCTF 2022 — Rev — dll — Write-Up

InersIn
3 min readDec 11, 2022

Pada challenge ini kita diberikan 2 file, yaitu exe dan loader. Saya langsung buka file loader menggunakan IDA.

main function

Program akan meminta kita memasukan nama file sebagai argument dan akan membaca file tersebut, kemudian pada function sub_1777 program akan menjalankan data dari file yang kita masukan.

sub_1777 function

Jadi saya menyimpulkan file yang kita masukan ada file exe yang kemudian akan di jalankan sebagai function.

Jika kita check file exe, file ini semacam binary executable file.

file exe

Kemudia saya gunakan gdb untuk dynamic analysis, saya memasang breakpoint sebelum program menjalankan isi dari file exe, gunakan ropper untuk mencari instruction “call rdx”.

Setelah itu kita gabungkan dengan base address dari program pada gdb, setelah itu kita pasang breakpoint.

Setelah itu kita run.

Setelah itu kita step into, dan print instruction.

Program berulang kali memanggil r12, jika kita check file exe pada IDA ini adalah isi dari file exe, program akan mengecek apakah input kita 32 karakter, dan kemudian input kita akan di xor dengan 0x69.

Setelah saya sampai pada bagian input kita di xor dengan 0x69, saya menyimpulkan kemungkinan flagnya juga di xor 0x69, jadi saya coba melakukan xor pada format flag “KCTF”.

Dan saat saya check pada stack program, ternyata hex tersebut ada pada stack:)

Karena flag 32 karakter, jadi saya ambil dari 0x7fffffffdd70 sampai 0x7fffffffdd88, kemudian saya gunakan python untuk mengxor tiap byte dengan 0x69.

enc = ['14', '58', '58', '58', '19', '1c', '04', '1b', '5d', '1e', '36', '1b', '59', '0f', '36', '5a', '04', '02', '0a', '5d', '1b', '0a', '36', '10', '5c', '5d', '5a', '12', '2f', '3d', '2a', '22']

for x in enc:
n = int(x, 16)
print(chr(n^0x69), end="")

Tinggal kita reverse string itu, kita akan mendapatkan flag nya.

Flag: KCTF{345y_cr4ckm3_f0r_w4rmup111}

--

--

InersIn

PARSECT // IT Security Enthusiast // STOICISM // KEEP DO SOMETHING LEGAL