[Imaginary CTF] – Keycode

Pada challenge ini saya diberikan sebuah file bernama key.

Step pertama yang saya lakukan adalah membuka file tersebut menggunakan IDA64.

Main Function
checkFlag Function

Nah, kita akan bermain di checkFlag Function ini. Disini terlihat ada sebuah nilai yang di XOR. Dan yang menariknya lagi disini adalah nilai yang di XOR terlihat seperti function checkFlag yang di recursive. Coba kita debug menggunakan gef.

Seperti yang kita lihat, checkFlag merupakan function yang dipanggil dan bisa dijalankan.

Tetapi disini, ada nilai dari function checkFlag yang dipanggil. Coba kita lihat nilainya menggunakan command x/20x checkFlag

Nilai dari x/20x checkFlag

x = memunculkan isi memory dari sebuah address tertentu, dengan format spesifik
20 = jumlah elemen yang akan ditampilkan
x (setelah 20) = elemen yang ditampilkan akan menggunakan format hexadecimal
checkFlag = address yang akan kita tampilkan isi memorinya.

Ternyata, checkFlag mempunyai nilai tersendiri. Nilai ini adalah ‘key’ yang akan kita XOR dengan nilai ‘ciphertext’. Ciphertext terdapat di variable flg.

Setelah itu, saya mengambil nilai dari checkFlag tersebut sesuai dengan jumlah huruf yang akan kita XOR, yaitu 49 karakter. Lalu, saya membuat script simple agar setiap karakter ciphertext bisa langsung di XOR dengan key yang kita dapatkan.

Berikut adalah result ketika script tersebut dijalankan:

ictf{wh@t_g00d_i5_@_10ck_!f_th3_l0ck_!s_th3_k3y?}

Leave a Reply

Your email address will not be published. Required fields are marked *