[PicoCTF2018] – A Simple Question

Writeup Reference https://github.com/shiltemann/CTF-writeups-public/tree/master/PicoCTF_2018#web-exploitation-650-a-simple-question

Challenge Description : There is a website running at http://2018shell1.picoctf.com:36052 (link). Try to see if you can answer its question.

Tampilan pertama setelah meng-klik link diatas adalah :

Pertama penulis mengecek source code yang tertera :

<!– source code is in answer2.phps –>

Mari kita buka , didapat

Dari source code tersebut, dapat diketahui bahwa website tersebut menggunakan SQLite

Mari kita lakukan beberapa percobaan input :

Dimasukkan ‘a’

Wrong.

Kemudian dicoba query SQL ‘ ‘OR 1=1– -‘

You are so close.

Website mengeluarkan 2 output yang berbeda, sehingga ditentukan dapat dilakukan attack Blind SQLI. Blind SQLI merupakan suatu metode attack yang memiliki kemiripan dengan SQLI biasa, namun dengan cara yang lebih sulit karena berbeda dengan SQLI biasa, website yang diserang tidak akan menampilkan output data dari databasenya melainkan hanya 2 output diatas, “Wrong.” atau “You are so close.” kedua response inilah yang akan kita manfaatkan untuk menentukan jawaban yang benar dengan melakukan bruteforce request http melewati form di website tersebut.

Untuk memudahkan pencarian jawaban, maka penulis membuat sebuah script :

Secara singkat, script ini akan melakukan http request melalui form yang disediakan, dengan metode POST ke url http://2018shell1.picoctf.com:36052/answer2.php dengan character list yang terdiri dari ascii lowercase, ascii uppercase, dan nomor.
Request pertama akan berbentuk seperti ‘OR answer LIKE ‘a% (Wrong) dan dilanjutkan terus menerus sampai kata yang diinginkan didapat.

Dikarenakan penulis tidak membuat kondisi dimana script akan dihentikan saat sudah benar, maka penulis sengaja meninggalkan laptopnya untuk makan siang dan kembali saat scriptnya tidak dapat menemukan char yang benar lagi.

Hasil yang didapatkan adalah :

41andsixsixths

Wrong.

Disini penulis bingung dan mencoba mengotak-atik scriptnya seperti memperluas charlist menjadi semua printables. Namun terdapat error, sehingga mencoba untuk mengexclude % dan ‘ namun juga masih belum berhasil. Tetap mendapat jawaban yang sama, setelah beberapa waktu mencari, ternyata query LIKE pada SQLite case-insensitive.

LIKE yang case-insensitive dapat digambarkan seperti :

‘a’ LIKE ‘A’ akan menghasilkan true

Sehingga penulis mencoba merubah huruf kapital pada setiap awalan kata menjadi

41AndSixSixths

Perfect!

Your flag is: picoCTF{qu3stions_ar3_h4rd_73139cd9}

Leave a Reply

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