WU3 - Racecar

Calvin Winata, Satya Kusuma


Setelah mendownload dan mengekstrak filenya, saya langsung memeriksa file menggunakan checksec dan ditemukan semuanya enabled yang dapat dikatakan hampir tidak bercelah.

Lalu saya langsung mencoba menjalankan file tersebut dan hasilnya seperti gambar dibawah. [next page]

Karena dirasa tidak mendapatkan informasi yang cukup dari sebelumnya, jadi saya membuka ghidra untuk melihat dan menganalisis codenya lebih lanjut. Gambar di bawah merupakan function main, dari sini saya mencoba membuka bagian info(), car_info(), dan car_menu().

Setelah dicek, ternyata pada bagian car_menu() memiliki code yang menarik perhatian saya (yang di kotak merah).

*** __format menjadi code yang menarik perhatian saya karena hal ini dapat membuat input yang kita masukkan seperti %x. memberikan output berupa hex. Soal ini mirip dengan soal PicoCTF-BinaryExploitation-Stonks hanya saja analisisnya berbeda.

Setelah mengetahui hal tersebut, saya langsung mencoba memasukkan %lx. (long hex) seperti gambar dibawah, namun ternyata masih kurang panjang untuk mendapatkan flagnya. Jadi saya mengulang lagi dan memperpanjang inputnya.

Ya, diperpanjang sampai mampus seperti gambar di bawah ini, namun ternyata hasilnya pendek... tapi yaudahlah, langsung aja kita bawa hasilnya ke hex to ascii online tool.

Kurang lebih hasilnya seperti gambar di bawah ini [next page] Biar ga usah scroll lagi, ini hasilnya: {BTH_yhw_d1d4s_1t_3vf_3h_g4lt_n05_3hkc4t}!?

Setelah didapat hasilnya, kita tahu bahwa string tadi [{BTH_yhw_d1d4s_1t_3vf_3h_g4lt_n05_3hkc4t}!?] adalah flagnya. Namun tidak semudah itu, hal ini dikarenakan little endian (intinya little endian ini ngebuat string yang diprint jadi kebalik).

Oleh karena itu kita harus me-reverse terlebih dahulu stringnya, untuk mempercepat disini saya memakai reverse string online tool.


BOOM! Belom beres, sekarang saatnya string tersebut dibalik setiap 4 char sehingga menghasilkan flag di bawah.


Flag: HTB{why_d1d_1_s4v3_th3_fl4g_0n_th3_5t4ck?!}


Thank you for reading!