[RingZer0] – Random Login Form

Link soal: https://ringzer0ctf.com/challenges/171

Hal pertama yang saya lakukan adalah memasukkan payload simple dari SQL yaitu ‘ or 1=1# karena dari jenis soalnya adalah SQL injection, akan tetapi saya tidak mendapatkan apa-apa.

Sehingga saya mencoba untuk melakukan register account baru dan mencoba untuk login. Saya berhasil masuk dan tertulis “seems like your not an admin”.

Di sini, saya menyimpulkan bahwa jika kita ingin mendapatkan flagnya, kita harus memiliki username yang bernama “admin”.

Setelah itu, saya mencoba untuk register dengan username “admin”.

Ternyata username “admin” telah digunakan. Di sini saya semakin curiga dengan username “admin”.

Saya mencoba untuk membuat username yang menyerupai “admin” tetapi dengan ditambahkan spasi agar tidak benar-benar sama dengan apa yang ada di dalam database. Sehingga saya mencoba melakukan register dengan username “admin “.

Spasi di sini berguna untuk melewati validasi yang ada di dalam PHPnya. Akan tetapi, di dalam database, whitespace akan dihilangkan sehingga yang tersimpan di dalam database hanya “admin” (tanpa whitespace). Akan tetapi, username telah digunakan.

Setelah itu saya juga mencoba untuk melakukan register dengan username ” admin”.

Dan username terdeteksi telah digunakan lagi.

Sehinga pada akhirnya saya menyimpulkan bahwa di dalam code PHP dia menggunakan trim().

Apa itu trim()? trim() di sini berguna untuk menghilangkan whitespace atau character lain yang berada di awal dan di akhiran string. (https://www.php.net/manual/en/function.trim.php)

Contoh snippet mengenai penggunaan trim:

Dapat dilihat bahwa terdapat spasi di awal dan di akhir dari string “Hello World!”, setelah di trim, hasilnya adalah sebagai berikut:

Spasi yang berada di awal dan di akhir string tersebut telah dihilangkan oleh trim.

 

Setelah itu saya mencoba untuk register username dengan nama “ad min” dengan harapan dia tidak menghilangkan space yang berada di antara string.

Dan voila, username tersebut berhasil saya buat.

Hal ini dapat terjadi karena di dalam code PHP tidak dilakukan validasi untuk menghilangkan spasi yang berada di tengah-tengah string.

Setelah itu, saya masuk dengan username “ad min” yang telah saya buat tadi dan saya mendapatkan flagnya.

Flag: FLAG-0Kg64o8M9gPQfH45583Mc0jc3u

Leave a Reply

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