[34C3 CTF] – Morph

write up asli :

https://teamrocketist.github.io/2017/12/30/Reverse-34C3ctf-m0rph/

binary file  :

https://drive.google.com/file/d/1aVF5hBrf9C3HeEgHSWn7QCPMlREjgaZO/view?usp=sharing

pertama yang saya lakukan adalah mengecek jenis dari file ini

lalu setelah itu saya coba jalankan filenya

tidak ada yang terjadi jadi langsung saja file ini saya disass di IDA pro 64

untuk mengetahui apa yang sebenarnya dijalankan oleh program.

darisini kita bisa tau beberpa informasi yaitu bahwa panjang array a2 itu adalah 23 jika tidak 23 maka dia tidak akan dapat melewati validasi tersebut, kemudian ada 2 function penting yang dipanggil di dalam situ yaitu sub 8D0() dan sub_987().

sub_8D0() itu

 

disini ada proses mallocnya lalu kemudian di process sub_987()

disini ada process random yang dilakukan selama loopingannya berlangsung dimana ada v1 dan v2 yang dirandom jadi jika disambung kembali ke main pertama setelah memanggil mmap untuk membuat memory mapped file i/o kemudian dia memanggil function sub_8D0 untuk melakukan process malloc setelah itu ketika sudah melewati validasi bahwa panjang string tersebut adalah 23 maka dia langsung memanggil sub_987 untuk merandom isi dari flag atau string tersebut

kemudian kita jalanakan program ini di radare untuk mengetahui alamat dari si RAXnya

dari sini kita dapat melihat bahwa kita memulai program dari argv1 dan melakukan breakpoint(db) dan di continue(dc) lalu kita mencari alamat dari si RAX.

disini yang dilakukan adalah dengan membuat r2pipe/radare scrypt yang dijalankan untuk melakukan disass di main dan melakukan parcing di code untuk mendapatkan alamatnya, karena disini pie protection itu nyala

maka disini alamat yang akan di breakpoint akan selalu berbeda setiap kali kita melakukan debug,

kita juga tidak boleh lupa untuk melakukan update ke argv1 string yang benar sebelum masuk ke dalam process cmp, jika shellcode ini salah maka program akan memanggil syscall_exit

jalankan

here is your flag

 

Leave a Reply

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