[Imaginary CTF] – Go Fish!

Pada challenge ini, saya diberikan sebuah file ELF bernama gofish.

Seperti dari nama challengenya, kita dapat mengetahui bahwa file ini dibuat dengan bahasa pemrograman GoLang (Google Language). Karena file binary ini not stripped, kita bisa mencari function mainnya. File ini dibuat dengan bahasa GoLang, maka function mainnya ada di main_main. Mari kita buka file ini di ghidra.

main_main function

Hmm.. file ini terlalu panjang untuk dianilisis. Mari kita coba jalankan terlebih dahulu.

Disini, program tersebut meminta input dari user. Saya memasukkan aaaa, lalu programnya exit. Sepertinya inputnya salah. Mari kita coba lihat di ghidra.

main_main function

Disini terlihat bahwa ada 2 kali ReadString. Sepertinya program ini meminta input user sebanyak 2 kali. Di ReadString pertama, dia melakukan comparasion string yang dimasukkan oleh user dengan 0x2168736946206f47, yang jika kita translate ke character menjadi “!hsiF oG”, yang dimana kalau kita balik, akan menjadi “Go Fish!”. Menjanjikan. Mari kita coba masukkan Go Fish! ke inputan pertama.

Seperti yang telah kita duga, dia meminta input user sebanyak 2 kali. Input user kedua juga di compare dengan string yang telah ditetapkan, yaitu 0x6820756f79206f44, 0x20657661, 0x6e61, dan 0x79, yang kalau di translate ke char secara berurutan, akan menjadi “h uoy oD”, ” eva”, “na”, dan “y”, yang dimana kalau di putar, akan menjadi “Do you have any”. Hmm, menarik. Tapi “any” apa yang akan ditanyakan? Disini, ketika if “Do you have any”, sudah terpenuhi, di dalamnya terdapat if lagi, yang dimana jumlah character dari “Do you have any ….” tersebut harus 0x17, atau 23 character. Lalu disana terdapat suatu register DAT. DAT berfungsi sebagai penampung value dari sebuah variable. Coba kita lihat isi dari DAT tersebut.

Register DAT_004C250E

Mantap. Kita dapat input keduanya. Langsung aja kita cobain inputnya.

ictf{g0_g0_g@dg3t_g3t_m3333_a11_th3_f1@gzz!}

Leave a Reply

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