BLANTERWISDOM101

WriteUp CTFR, strcpy #1 (Reversing)

Selasa, 27 April 2021


Udah lama nih ga mainan pentesting lagi. Sibuk developing website. *Huft.. Oke, kali ini kita mau main game CTF lagi dari CTFR yang dikembangkan oleh RasyidMF di rasyidmf.com.

Seperti yang diketahui, reversing atau singkatan dari reverse engineering sangat lah berguna dalam dunia penetration testing khususnya pada back-end aplikasi tersebut baik itu web, mobile, dan desktop. Teknik ini juga akan kita lakukan pada tantangan yang satu ini yaitu pada strcpy #1. Oke, langsung simak ya..

Untuk challenge ini yang solved masih ganya sekitar 68 orang.. Hemm.. apakah semudah itu?? oke kita coba yah..

Install Radare2

Jika perangkat kamu menggunakan linux atau kamu menggunakan mobile/hp di emulator termux maka saya sarankan menggunakan radare2. Cara install nya mudah sekali. Cukup ketik:
apt install radare2

Dan radare2 akan terinstall dengan ukuran 30MB.

Lihat Deskripsi, Clue, dan Download File

Pada tantangan ini sudah dideskripsikan bahwa dalam C++ ada merupakan fungsi strcpy yaitu stringcopy. Namun tidak dijelaskan apakah kita akan menggunakan fungsi tersebut di dalam alur solving kita. Jadi kita langsung saja download file yang sudah di sediakan di Mega.

Mulai Reversing

Untuk mereverse source file pada radare2. Jalankan radare2 dengan perintah:
r2 [namafile]

#dalam hal ini:
r2 strcpy

#jika ingin merapihkan struktur gunakan:
r2 -e io.cache=true strcpy

Maka akan menampilkan output seperti berikut:

Lalu, pada form input untuk menjalankan perintah ketik "i" untuk melihat meta informasi aplikasi/program.

Pada gambar diatas sudah terlihat program menggunakan bahasa C++ menggunakan compiler GCC pada linux dan lain sebagainya.

Oke, selanjutnya karena mengenai fungsi strcpy dan kita mencari flag maka ketik perintah "iz" untuk melihat seluruh string yang dioutput program dan "ie" untuk melihat entry point jika ada proteksi dipasang seperti NX, Canary, relocs, dan sebagainya.

Program tidak terenkripsi dan diproteksi sekaligus kita dapat mencari string yang dibutuhkan seperti kata "Flag" dan sebagainya. Saya mencoba mencari kata "Flag","CTFR", dengan mengetikkan perintah garis miring diikuti string yang kita cari seperti pada gambar di bawah:

Namun tak kunjung ketemu. Apakah flag terenkripsi dan ada dalam fungsi strcpy? Maka untuk melihat keseluruhan fungsi yang digunakan pada biner, kita cari menggunakan perintah "aaa" diikuti "afl".

Fungsi didefinisikan pada simbol sym.fungsi. Namun tak tertulis juga terdapat fungsi sym.strcpy. Akhir nya karena saya malas untuk melihat isi kode dari keseluruhan fungsi maka otak malas saya bekerja untuk mencari char "{" dan "}" karena biasanya Flag berupa CTFR{flag} dan akhirnya ketemu donk..

Pada font berwarna kuning adalah keyword string yang kita cari dan terletak pada masing-masing kode biner. Bendera pun ditemukan yaitu: CTFR{34sy_strc0py_fl4g}. Dan akhirnya kita submit flag nya dan bum benar..


Mudah sekali bukan? Tidak perlu memutar otak karena memang ini tertulis level nya adalah easy. Yang pasti pemula juga dapat melakukannya.
Share This :
Arya Kresna

Hanya seorang pelajar yang hobi nya membuat kode dan berharap karya nya bermanfaat bagi orang lain.

0 komentar