Free Flag (280 pts)

Mr. Shock is feeling generous today, so here's an attached program that will give you the flag. Just in case you don't know who this generous person is.arrow-up-right

Author: Lurifos

Kita diberikan sebuah filearrow-up-right ELF executable x86-64. Awalnya, saya mencoba untuk langsung membuka file ini menggunakan Ghidra. Akan tetapi, decompilernya gagal membaca fungsi utama entry() dengan benar, dan yang kita dapatkan adalah fungsi berantakan ini.

Setelah iseng mencoba melakukan strings pada file, saya menemukan bahwa file ini telah di-pack menggunakan UPX versi 5.00.

Merujuk pada write-up iniarrow-up-right, kita perlu meng-unpack file dengan UPX yang versinya sesuai. UPX versi terbaru dapat di-download di siniarrow-up-right.

Untuk unpack-nya sendiri cukup menjalankan ./upx -d <file> .

Setelah ini, kita decompile file yang baru menggunakan Ghidra. Sekarang, fungsi entry() tampak lebih jelas.

Fungsi ini memanggil fungsi lainnya yakni FUN_00401080() yang intinya adalah sebuah flag checker. Jika inputnya sama dengan flag, maka outputnya adalah benar.

Kalau dirapihkan, hasilnya akan seperti ini.

Value "FLAG" adalah DAT_00402360 yang tampak seperti ini pada Ghidra.

Bytes yang ada pada DAT_00402360 , jika dijalankan pada algoritma yang sama dengan fungsi flag checker di atas, tentunya akan menghasilkan flag. Oleh karena itu, berikut adalah script yang saya gunakan.

Flag: IFEST13{w3ll_n07h1n9_1z_fr33_1n_l1f3_s0_7h15_1z_n07_s0_fr33_4f73r_4ll}

Last updated