[Compfest11 Qualification] – Pendaftaran Volunteer AYEY

Pada soal ini, kita hanya bisa mengupload file dalam bentuk JPEG/GIF/MP4/ZIP. Kita tidak dapat menuploadfile dalam bentuk yang lainnya (php/python/etc).

Setelah melihat bentuk soal ini, saya langsung menebak bahwa pada soal ini kita harus menupload file script yang berisikan system($_GET[‘a’]);. Saya memperkirakan ini karena pada soal ini, kita diharuskan untuk mengupload suatu file untuk dapat menjadi volunteer.

Alasan saya berpikir harus menggunakan webshell adalah, ketika ada suatu soal yang mengharuskan kita untuk mengupload suatu file, banyak cara yang dapat kita lakukan untuk mengexploit vulnerabilitynya, salah satu caranya adalah dengan mengupload webshell.

Link yang membahas tentang file upload vulnerability:

system($_GET[‘a’]) ini bertujuan untuk menanamkan backdoor di dalam server. Sehingga kita bisa menginject command di server tersebut.

Dikarenakan system($_GET[‘a’]) ini dituliskan dalam code php, kita harus memanipulasi file kita menjadi .php.png (misal nama file code saya adalah test.php, saya rename menjadi test.php.png). Hal ini harus dilakukan agar server membaca file kita sebagai file png.

Berikut adalah isi dari file test.php.png

Akan tetapi, kita harus mengganti file extensionnya ketika kita submit. Jika tidak kita hilangkan .png nya, file tetap akan terbaca sebagai image, bukan sebagai code php. Maka dari itu, saya menggunakan Burp Suite untuk menintercept dan mengganti file extension tersebut.

Sebelum file test.php.png disubmit, Burp Suite dibuka terlebih dahulu. Lalu, kita kembali lagi ke soal tersebut dan kita submit file test.php.png nya.

Setelah itu, kita kembali lagi ke Burp Suite.

Setelah itu, kita ubah filename nya menjadi “test.php”

Saya mencoba untuk Send to Repeater untuk mengetahui respon apa yang kita dapatkan ketika saya mengganti filenamenya menjadi “test.php”

Berikut adalah tampilan dari repeater

Di sini dapat kita lihat bahwa file yang kita upload tadi ada di path “uploads/peserta_test.php”. Setelah saya mengetahui ini, saya kembali ke proxy dan tekan Forward. Setelah itu kita kembali lagi ke soal dan seperti inilah tampilannya.

Setelah itu, saya mencoba untuk masuk ke path yang telah kita dapatkan tadi.

Terdapat error yang berasal dari file yang telah kita upload tadi. Di sini kita bisa lihat bahwa code telah dijalankan oleh server. Setelah itu kita hanya tinggal memasukkan command terminal untuk mencari flagnya. Saya memulainya dengan menggunakan “a=ls -la”.

Di sini, kita dapat melihat owner dari file tersebut, root dan www-data. Saya melakukan pencarian pada file-file yang dibuat oleh root.

Hal pertama yang saya lakukan adalah mencarinya dengan menggunakan command “strings [namafile]”, akan tetapi saya tidak menemukan apapun.

Setelah itu, saya mencoba untuk membuka satu per satu image yang ada di server yang dibuat oleh root. Dan saya menemukan flagnya.

Flag: COMPFEST11{s3nd1ng_f4ke_m41l_huh?}

Leave a Reply

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