[SecureBug] – Inception

Diberikan sebuah website yang berfungsi untuk mencari sebuah user yang ada didalam database. Ternyata web ini vulnerable dengan SQL Injection attack. Lalu saya mencoba untuk melakukan Union Based Attack, tetapi diberikan blacklist dengan preg_replace dengan ketentuan sebagai berikut.

Jadi cara kerja dari preg_replace itu mencari dan merubah semua pattern yang diinginkan, dalam kasus ini “select, union, from, where” akan dirubah menjadi string kosong. Untuk bypass preg_replace bisa menggunakan cara seperti ini :

  • selselectect
  • ununionion

Jika kita menginput sebuah string “selselectect” maka PHP akan menjalankan algoritma preg_replacenya itu seperti ini :

  • select yang berada ditengah akan diubah menjadi string kosong
  • lalu query akan membaca “sel[stringkosong]ect” atau singkatnya menjadi select

Nah, dengan konsep ini kita bisa menjalankan Union Based attack seperti biasa. Pada attack kali ini kita harus enumerasi secara manual berapa jumlah kolom yang dipakai pada query asli. Didapatkan bahwa ada 3 kolom yang dipakai serta hanya kolom nomor 1 yang akan ditampilkan.

enumerasi kolom yang akan ditampilkan

Lalu untuk enumerasi tabel yang digunakan maka kita bisa merubah payload dengan menambahkan table_name menggantikan posisi angka 1 (karena yang akan ditampilkan itu hanya kolom pertama yaitu angka 1) lalu information_schema.tables yang berisi semua tabel yang berada didalam database (seperti lemari yang berisi buku). Maka akan didapatkan nama tabel yang dipakai yaitu inception_users

Didalam sebuah table database pasti memiliki kolom untuk menaruh data yang diperlukan, untuk enumerasi kita tinggal merubah table_name menjadi column_name dan merubah information_schema.tables menjadi information_schema.columns serta menambahkan and table_name = ‘inception_users’ di akhir query. Didapatkan ada 3 kolom, cocok dengan union select kita yaitu 3 kolom.

Untuk final payload maka kita bisa melihat semuanya itu dengan group_concat yang berfungsi menggabungkan semua kolom menjadi satu baris jadi kita tidak perlu enumerasi kolom satu persatu.

Flag : SBCTF{c0ngr4c0ngr4tul4t10nstul4t10ns}

Leave a Reply

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