October 24, 2026
PortSwigger | SQL Injection Lab
SQL injection vulnerability in WHERE clause allowing retrieval of hidden data
By Ahmad Solehudin
2 min read
For Independent Learning
Deskripsi:
Lab ini berisi kerentanan sql injection pada klausa WHERE yang memungkinkan pengambilan data tersembunyi. Lab ini berisi kerentanan pada filter kategori produk. Saat user memilih kategori, aplikasi menjalankan query sql seperti berikut:
SELECT * FROM products WHERE category = 'Gifts' AND released = 1SELECT * FROM products WHERE category = 'Gifts' AND released = 1Langkah-Langkah:
Pertama: Gunakan Burp Suite kemudian akses lab dan lakukan tindakan untuk mencegat dan memodifikasi permintaan yang mengatur filter kategori produk
Kedua: Setelah Burp Suite terbuka, masuk ke Proxy => HTTP history => open browser
Ketiga: Setelah akses lab, copy url lab di tab baru dan paste di browser Burp Suite kemudian klik salah satu kategori
Keempat: Kembali lagi ke Burp Suite dan lihat di HTTP history, cari request filter category => klik kanan => send to repeater =>buka repeater
Kelima: Buka repeater dan ubah kategori parameter tersebut dengan memasukan kode '+OR+1=1 โ lalu klik send, jika di bagian response hasilnya HTTP/2 200 OK berarti sudah berhasil dan lab telah terselesaikan
Keenam: Cek di browser dan pastikan statusnya sudah solved
Celah SQL Injection jenis ini umumnya masuk ke dalam rentang skor 7.0 sampai 8.9, atau dikategorikan sebagai tingkat bahaya HIGH (Tinggi). Oleh karena itu, berikut langkah mitigasinya:
- Gunakan Cetakan Query (Prepared Statements): Buat cetakan perintah SQL yang kaku terlebih dahulu. Input dari pengguna hanya boleh mengisi slot kosong di dalam cetakan tersebut. Sistem akan menganggap input itu murni sebagai teks biasa, bukan sebagai perintah baru.
- Pakai Framework Modern (ORM): Jika membuat kode dari nol terasa sulit, gunakan alat bantu seperti Laravel, Django, atau Spring. Alat-alat ini sudah memiliki "satpam otomatis" di dalamnya yang otomatis menangkal perintah mencurigakan.
- Saring Input Pengguna (Validasi): Jangan percaya 100% pada apa yang diketik pengguna. Jika sistem meminta input angka (seperti ID produk), pastikan yang masuk hanya angka. Jika ada yang memasukkan karakter aneh seperti tanda petik (') atau strip dua (--), langsung tolak.
- Batasi Kekuasaan Akun Database: Berikan hak akses secukupnya pada aplikasi web Anda. Jangan biarkan akun aplikasi web memiliki kekuatan penuh (sebagai Admin/Root) yang bisa menghapus atau mengacak-acak seluruh sistem database.