Blind SQL injection with conditional responses
Link : https://portswigger.net/web-security/sql-injection/blind/lab-conditional-responses
Last updated
Link : https://portswigger.net/web-security/sql-injection/blind/lab-conditional-responses
Last updated
Description:
This lab contains a blind SQL injection vulnerability. The application uses a tracking cookie for analytics, and performs a SQL query containing the value of the submitted cookie.
The results of the SQL query are not returned, and no error messages are displayed. But the application includes a Welcome back
message in the page if the query returns any rows.
The database contains a different table called users
, with columns called username
and password
. You need to exploit the blind SQL injection vulnerability to find out the password of the administrator
user.
To solve the lab, log in as the administrator
user.
Proof of concept:
Cek seluruh fitur pada aplikasi target
Pada target terdapat cookie
dengan parameter TrackingId
Coba untuk menginputkan payload basic SQL injection seperti single-quote (')
. Jika sudah, analisa response yang diberikan setelah diinputkan payload SQL Injection. Terlihat sebelum, dilakukan injeksi, response mengandung pesan "Welcome back!"
namun setelah dilakukan injeksi, string tersebut tidak terlihat pada response. Ini dapat dijadikan sebuah indikasi awal bahwa cookie
tersebut rentan terhadap SQL injection
Untuk lebih memastikannya, coba untuk menginjeksikan kembali payload basic SQL injection yang lainnya. Sebagai contoh disini menggunakan payload 'AND '1'='1
yang artinya bernilai true
.Jadi, apabila payload tersebut diinjeksikan atau diinputkan atau disisipkan pada cookie
parameter TrackingId
maka akan bernilai true (benar)
atau normal atau response yang diberikan oleh sistem akan mengembalikan response ketika kondisi cookie valid
Dan benar saja seperti yang dapat dilihat pada gambar diatas, karena payload yang diinputkan bernilai true
maka response kembali kesemula (normal) atau pesan “Welcome back!”
kembali tersedia. Untuk memastikan kembali, saya mencoba menginjeksikan kembali payload. Kali ini saya melakukan injeksi basic payload yang bernilai false
yaitu ‘AND ‘1’=’2
Seperti yang dapat dilihat pada gambar diatas, ketika payload yang diinputkan bernilai false
maka pesan “Welcome back!”
tidak muncul. Maka dapat disimpulkan cookie parameter TrackingId
rentan terhadap SQL Injection
Selanjutnya adalah melakukan eksploitation kerentanan SQL injection tersebut dengan menggunakan script python seperti gambar dibawah ini
Jika sudah, jalankan script python tersebut menggunakan perintah python <<filename>>.py