Writeup CTF Hackta Camp 2026: Reverse Engineering Challenge
Deskripsi Tantangan
Pada kompetisi **Hackta Camp x Ruangguru 2026**, terdapat satu tantangan menarik kategori Reverse Engineering berjudul secure_auth. Diberikan sebuah file binary ELF 64-bit yang meminta password masukan. Jika password cocok, flag akan tercetak.
Analisis Awal dengan `file` dan `strings`
Langkah pertama adalah mengecek informasi file:
bash
$ file secure_auth
secure_auth: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked...
Menjalankan perintah strings untuk mencari hardcoded key:
bash
$ strings secure_auth | grep -i "flag"
# Tidak membuahkan hasil langsung karena flag ter-enkripsi di memory.
Dekompilasi Menggunakan Ghidra
Setelah membuka binary di Ghidra, kita menemukan fungsi main() yang memanggil check_password(). Di dalam fungsi check_password(), terdapat operasi XOR sederhana:
cundefined8 check_password(char *input) { int i; char key[] = "h4ckt4_c4mp_2026"; for (i = 0; input[i] != '\0'; i++) { if ((input[i] ^ 0x37) != key[i]) { return 0; // Gagal } } return 1; // Sukses }
Solusi XOR
Karena operasi XOR bersifat reversibel (A ^ B = C berarti C ^ B = A), kita dapat mendekode kunci asli dengan melakukan XOR karakter key dengan nilai hex 0x37:
pythonkey = "h4ckt4_c4mp_2026" flag = "".join([chr(ord(c) ^ 0x37) for c in key]) print("Flag input:", flag)
Menjalankan python script tersebut menghasilkan password asli, yang setelah diinputkan ke program langsung menghasilkan flag kompetisi!