Не важно, как медленно ты продвигаешься, главное, что ты не останавливаешься.


Tuesday, 22 March 2016

FIT 2016 reverseme

Kali ini kami akan membahas salah satu soal CTF FIT 2016 tentang reverseme, file dapat diunduh di link[soal]. Karena keterbatasan waktu, soal ini belum sempat dijawab, kami akan mencoba untuk mengupas cara untuk mendapatkan flag dengan menggunakan radare2.

Gambar 1 : start r2 debug mode
Dimulai dengan membuka reverseme menggunakan radare2 dalam debug mode dengan flag percobaan 12345678901234567890, mengapa flagnya seperti itu?, setelah kami telusuri panjang flag haruslah 20, ini terdapat pada fungsi main yang bisa anda jelajahi lebih lanjut, jalankan perintah 'aaa' untuk analyze dan 'afl' untuk melihat fungsi yang berada pada reverseme. Proses analisis akan kami mulai dengan fungsi main.

Gambar 2 : Analisis fungsi main
Jalankan perintah 'pdf @ main' untuk melihat code pada fungsi main, kemudain kami menemukan bagian yang menarik seperti pada gambar dibawah ini.

Gambar 3 : String flagnya benar!

Dimana sebelumnya terdapat pemanggilan fungsi memcmp. Maka kami mencoba menambahkan breakpoint pada alamat 0x00400813 dan melanjutkan proses debugging sampai ke breakpoint yang telah dibuat.

Gambar 4 : Breakpoint
Agar lebih mudah masuk ke mode visual dengan 'Vpp'.

Gambar 5 : RAX RCX
Perhatikan rax dan rcx sebelum pemanggilan memcmp, sama besarnya 0x14 atau 20 dalam desimal. Masih digambar yang sama nilai rax = 0x7ffd04336f94 dan rcx = 0x7ffd04336f60. Mari kita telusuri apa yang ada di alamat itu.

Gambar 6 : RAX RCX values
Jika diperhatikan pola rcx seperti tidak asing lagi, yaitu 12345678901234567890 setelah ditambah beberapa operasi jadilah seperti itu. Sementara rax merupakan string yang akan dibandingkan, yang kemungkinan adalah flagnya. Maka kita simpan nilai hex yang terdapat pada @ rax.

Gambar 7 : rax value
Simpan rangkaian hex '1d260b716f6e6d380b473a113a3b213e31444532' yang selanjutnya akan kita bedah menggunakan python.

Kemudian pertanyaan selanjutnya adalah ada operasi yang dilakukan sebelum masuk ke fungsi compare? jika sudah menemukan fungsi tersebut maka key ini dapat didecrypt dengan mudah.

Gambar 8 : Fungsi encrypt

Jika ditelusuri ('VV @ main' pada radare) terdapat fungsi sebelum melakukan comparing, ternyata karakter tersebut diolah dengan operasi xor 0x55 kemudian ditambahkan 0xa. Maka untuk mendapatkan fungsi deskripsinya operasi tersebut dibalik menjadi char chiper - 0xa kemudian di xor dengan 0x55. Kira-kira seperti ini pada python.

Gambar 9 : Flag
Setelah mendapat flag, mari kita verifikasi dengan cara memasukkan ke program reverseme.

Gambar 10 : Flag benar
Selamat, flagnya benar!

FIT2016{TheRedBaron}
5 λ .: FIT 2016 reverseme Kali ini kami akan membahas salah satu soal CTF FIT 2016 tentang reverseme, file dapat diunduh di link[ soal] . Karena keterbatasan waktu, s...

No comments:

Post a Comment

< >