SQL Injection

SQL injection ini salah satu cara yang bisa dipake buat ngejebol website, tapi sekarang-sekarang ini sih kebanyakan website securitynya udah lumayan bagus & rada susah buat make SQL injection. Buat ngelakuin SQL injection, kita bisa pake inputan text box di web page yang jadi target. Anggep aja kita mau nyoba SQL injection di halaman login website X yang punya text box untuk login form & tabel user yang isinya field user_id & password. Query SQL yang dijalanin dalam databasenya kira-kira begini nanti.

SELECT * FROM user WHERE user_id='(isi text box username)' AND password='(isi text box password)';

Untuk password, kemungkinan isi databasenya udah dienkripsi (biasanya pake enkripsi MD5), jadi yang dibandingin dengan isi databasenya nanti data password yang udah dienkripsi juga. Tapi anggep aja kita nggak pake enkripsi untuk passwordnya kali ini. Kalo kita login sebagai user yang punya username “bocah” & password “sial”, query yang dijalanin nanti kayak begini.

SELECT * FROM user WHERE user_id='bocah' AND password='sial';

Dari pola querynya, kita bisa liat kalo data yang dicocokin dengan isi database selalu pake tanda kutip, & di dalamnya ada isi dari field inputan username & password di form. Dari sini kita bisa ngakalin querynya. Kalo dalam field inputan username kita isi “bocah”, query SQL yang dieksekusi nantinya bakal masukin kata “bocah” dalam query & dikasih kutip satu untuk nandain kalo kata “bocah” itu data yang bukan dari database. Kata “sial” yang dicocokin dengan data yang ada di field password juga sama. Di sini, kalo gw masukin inputan “sial’ OR ‘1’=’1” di inputan password di form login, querynya kira-kira jadi begini.

SELECT * FROM user WHERE user_id='bocah' AND password='sial' OR '1'='1';

Jadi kita bisa nambahin perintah baru di dalam query SQL form login itu tadi. Seharusnya querynya cuma ngeluarin data dari tabel kalau ketemu record yang field user_id & password punya nilai “bocah” & “sial”, berarti perbandingan inputan username & password ke data di dalam tabel dua-duanya harus punya nilai true. Tapi kita nambahin perintah baru dalam querynya, jadi sekarang querynya bakal ngeluarin record dari tabel kalau ada record dalam tabel kalo field user_id nilainya “bocah” & field password nilainya “sial” atau nilai ‘1’ sama dengan ‘1’. Statement ‘1’ = ‘1’ nilainya udah pasti true, jadi kalau ternyata password untuk user “bocah” bukan “sial”, kita masih bisa login sebagai user “bocah”.

4 thoughts on “SQL Injection

  1. Pingback: MySQL: Cara Dapetin Nama Schema, Tabel, & Kolom | Twisted Pair

  2. Pingback: Sedikit Tentang Cross-Site Scripting | Twisted Pair

  3. Pingback: Cegah SQL Injection & XSS di Website | Twisted Pair

  4. Pingback: HTTPS, Aman di Jalan | Twisted Pair

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s