[HSCTF6] – Networked Password

Note: Mungkin untuk sebagian orang soal ini terlihat kurang menarik untuk dibuat writeup. Namun penulis memutuskan untuk membagikan writeup ini karena penulis greget terhadap waktu yang diperlukan untuk menyelesaikan soal 😀 .

Challenge Description:

Hint:

Diberikan sebuah web dengan tampilan sebagai berikut:

Hmm… terlihat seperti web sederhana yang berisi sebuah kolom input didalamnya. Mari kita periksa terlebih dahulu page_source barangkali ada sesuatu yang menarik.

Oke, website ini hanya memiliki sebuah kolom input dengan nama password dan form dengan metode POST ini akan mengirim request ke dirinya sendiri (index.php). Baik, sampai sini kita hanya memiliki informasi tersebut. Berikutnya, mari kita coba mengirimkan sesuatu ke server.

Dari yang kita kirim, tidak ada yang menarik dari request header maupun data. Dan jika inputan kita tidak sesuai dengan yang ada di server maka akan muncul “Incorrect Password”. Lalu bagaimana kita bisa mencari flag bila hanya ada informasi seperti ini? Kembali ke challenge description, dikatakan bahwa pada saat tertentu, sebuah request akan membutuhkan waktu lama sehingga akan terlihat lemot.

Setelah beberapa fuzzing yang dilakukan oleh penulis, penulis pun menemukan sesuatu yang menarik.

Dari 2 requests yang dibuat, ada 2 perbedaan yang cukup mencolok yakni time. Dari kedua requests tersebut terlihat jelas bahwa perbedaan waktu untuk menyelesaikan masing-masing request berbeda jauh. Jika dilihat dari data yang dikirim:

Input asal:

Input tertentu:

Dapat dilihat dari kedua gambar diatas, saat penulis mencoba mengirimkan string asal ke server “aaaaa”, waktu yang digunakan untuk menyelesaikan request tersebut sangatlah sebentar, sedangkan saat penulis mengirimkan “hsctf{” yang dimana adalah format flag dari kompetisi ini, waktu yang digunakan untuk menyelesaikan request cukup lama. Berarti dapat disimpulkan bahwa soal ini mengharuskan kita untuk melakukan brute-force flag dengan menggunakan request time sebagai acuan. Disini penulis membuat sebuah program python:

Inti dari program diatas adalah setiap request yang dikirim ke server akan mengirimkan string flag yang ditambahkan sebuah karakter yang akan dicoba, lalu untuk menentukan karakter mana yang benar adalah dari setiap karakter yang di brute, penulis akan mengambil waktu terlama dari semua percobaan karakter dan ditambahkan ke dalam string flag. Proses brute-force ini memakan waktu cukup lama (lebih dari 2 jam) dan dibagi ke dalam beberapa segmen brute karena berhubungan dengan time dan internet penulis yang kurang memadai. Berikut adalah bagian terakhir dari brute-force.

Flag: hsctf{sm0l_fl4g}

Leave a Reply

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