Blind SQL-Injection: Triggering Conditional Responses
Author: Anonputraid

Apakah Anda Pernah Melihat Web Yang Menyediakan Header Cookie Seperti Ini:
Cookie: TrackingId=u5YD3PapBcR4lN3e7Tj4
Disini Anda Sudah Memiliki Jalan Masuk Untuk Mengirim Data Kedalam Server. Karna Server Menset Header Cookie Nya Dengan Nama TrackingId
Dengan Begitu Apapun Data Yang Kita Kirim Menggunakan Name: TrackingId
Maka Data Tersebut Akan Direspon Oleh Server Karna Server Akan Memeriksa Seperti Ini:
SELECT TrackingId FROM TrackedUsers WHERE TrackingId = 'u5YD3PapBcR4lN3e7Tj4'
Seperti Yang Kita Tau Bahwa Query Seperti Ini Itu Rentan Terhadap Serangan SQL-Injection. Tetapi Masalah Nya, Hasil Query Yang Dikirim Tidak Akan Dikembalikan Kepengguna. Namun Kita Masih Dapat Memeriksa Apakah Aplikasi Rentan Dengan Cara Melihat Respon Server. Jika Server Mengenali Data Yang Dikirim Maka Server Akan Menampilkan Pesan Selamat Datang.
Logika Respon Pada Server Tersebut Cukup Untuk Mengekploitasi Kerentanan Pada Server Tersebut. Untuk Melihat Cara Kerja Teknik Logika Boolean Ini. Misal Nya Disini Kita Ingin Menyerang Cookie Tersebut:
Cookie: TrackingId=u5YD3PapBcR4lN3e7Tj4
Semisal Contoh Disini Saya Akan Mengirim 2 Data:
…xyz' AND '1'='1
…xyz' AND '1'='2
Data Pertama Itu Bernilai True, Dan Data Kedua Bernilai False. Data Yang Bernilai True Akan Membuat Server Mengembalikan Data "Selamat Datang" Pada Server. Sedangkan Data Yang Bernilai False. Server Tidak Akan Mengembalikan Data Apapun.
Serangan Ini Memungkin Kan Kita Untuk Mengetrack Satu Persatu Untuk Mendapatkan Informasi Pada Server. Kami dapat secara sistematis menentukan kata sandi untuk pengguna ini dengan mengirimkan serangkaian input untuk menguji kata sandi satu karakter pada satu waktu.
Untuk melakukan ini, kita mulai dengan input berikut:
xyz' AND SUBSTRING((SELECT pass FROM Users WHERE user = 'admin'), 1, 1) > 'm
Ini mengembalikan pesan "Selamat datang kembali", yang menunjukkan bahwa kondisi yang disuntikkan Bernilai True, sehingga Kita Mendapatkan Informasi Bahwa karakter pertama kata sandi Server lebih besar dari m
.
Selanjutnya, kami mengirimkan input berikut:
xyz' AND SUBSTRING((SELECT pass FROM Users WHERE user = 'admin'), 1, 1) > 't
Ini tidak mengembalikan pesan "Selamat datang kembali", yang menunjukkan bahwa kondisi yang disuntikkan Benilai False, sehingga karakter pertama kata sandi tidak lebih besar dari t
.
Lalu Menggunakan Mengirim Input Berikut:
xyz' AND SUBSTRING((SELECT pass FROM Users WHERE user = 'admin'), 1, 1) = 's
yang mengembalikan pesan "Selamat datang kembali", dengan demikian Dapat Kita Pastikan bahwa karakter pertama kata sandi adalah s
:
Kami dapat melanjutkan proses ini untuk secara Otomatis menentukan kata sandi lengkap untuk Administrator
pengguna.
Itu SUBSTRING
fungsi disebut SUBSTR
pada beberapa jenis database. Untuk lebih jelasnya, SIlahkan Anda Check Cheat Sheet.
Berikut Ini Adalah Cheat Sheet:
Last updated
Was this helpful?