[PicoCTF2018] – Quackme (XOR Operation)

 

Pertama, Check file yang telah kita download untuk melihat info detail file tersebut.

Setelah itu baru kita coba menjalankan program tersebut.

Bisa dilihat diatas bahwa pada saat program di jalankan, muncul sebuah pesan “Can you figure out my trick?” dan adanya perintah untuk menginput strings. ketika saya mengisinya dengan, misalkan yes maka jawaban dari inputan saya pastinya akan menampilkan pesan “That’s all folks” dan menutup programnya.

Dan untuk bisa melihat function2 yang terdapat pada program ini maka saya menggunakan Hopper dissasembler untuk menyelesaikannya.

Seperti inilah struktur dan function2 yang terdapat pada program main tersebut.

Saya pun memeriksa function utamanya dulu atau main function terlebih dahulu.

Setelah saya menampilkan pseudcode function main, kita bisa mengetahui bahwa sebelum function puts() atau tampilan “That all folks” -> menutup aplikasi . Ada sebuah function  do_magic() yang membuat saya penasaran. Maka dari itu saya langsung check function tersebut.

Pada function do_magic() ternyata memiliki pseudcode yang menjalankan operation pengecekan terhadap input dan membandingkanya kepada suatu kondisi(input) yang diinginkan oleh function tersebut.

sebenarnya fungsi utamanya terdiri dari large loop yang XORing dua string untuk bisa menampilkan sebuah flag.

if ((*(int8_t *)(var_18 + *greetingMessage) & 0xff) == (*(int8_t *)(var_14 + var_18) & 0xff ^ *(int8_t *)(var_18 + 0x8048858) & 0xff)) {
var_1C = var_1C + 0x1

Kondisi diatas adalah function untuk membandingkan antara var_18 + greetingmessage dengan var_14 (read_input() function) + var_18 & 0xff(equal to int(255) ^ *(int8_t*)(var_18 + 0x8048858) & 0xff)).

Karena saya penasaran dengan alamat 0x8048858, maka saya mencoba untuk ctrl+g (command untuk goto pada hopper dissasembler) untuk goto pada alamat tersebut.

Setelah saya goto, saya menemukan suatu function lagi yaitu sekretBuffer.

setelah memindahkan seluruh isi dari alamat 0x8048858 ke notepad, saya merapikannya terlebih dahulu agar mudah.

Pada saat ini saya memiliki semua informasi yang saya butuhkan untuk mendapatkan flag karena saya memiliki dua komponen operasi XOR yang merupakan semua yang diperlukan untuk menghitung komponen ketiga operasi XOR

Setelah itu saya pun membuat script.py dengan memasukkan greeting message dan isi dari alamat 0x8048858 untuk mendapatkan flag.

dan setelah solve.py dijalankan.

Keluarlah flagnya…..

 

 

Leave a Reply

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