Assalamualaikum.. kali ini saya akan memberi sedikit tutorial untuk Bug SQL Injenction yang terdapat di form login.
yang pertama bagaimana cara kita mengetahui sebuah website kita
mengandung Bug SQL Injection yang satu ini, yang pertama masuk kedalam
page user login atau admin login, biasanya kalo kita pengen mem bypass
admin bisa kita lakuin pake username / password ‘=’ ‘or’. bayangin cuma pake query tersebut kita bisa jadi admin sebuah website :v abis di input username/password
‘=’ ‘or’ kalo kita berhasil masuk ke halaman admin maka berarti web
tersebut vuln dengan bug ini, merupakan perintah comment pada sql, jadi
maksud dari proses tersebut ialah setelah mengecek user, trus kalo
terdapat user yang kita input kan pada database kita, maka proses query
selanjutnya tidak akan di jalanin, tapi langsung ke proses selanjutnya
yaitu redirect ke halaman index.
Proses ke dua.. gimana cara kita mengatasinya.
Silahkan lihat script cek_login.php yang emang ane bikin sederhana buat bisa di praktek ini.
<?php
mysql_connect(“localhost”,”root”,””) // koneksi ke database;
mysql_select_db(“contoh”) // pilih database;
$user=$_POST[‘user’] // user post;
$pass=md5($_POST[‘pass’]) // passpost;
$cek=mysql_query(“select * from admin where user=’$user’ AND pass=’$pass'”) // cek ke query;
$ketemu=mysql_num_rows($cek) //menghitung jumlah query yang di cek;
$r=mysql_fetch_array($cek) ;
if($ketemu>0){
session_start();
$_SESSION[‘admin’]=$r[‘user’];
header(“Location:.”);
}
else{
header(“Location:.”);
}
?>
Hmmmm seteleh melihat code php di atas ternyata kerentanan nya ada di sini..
$user=$_POST[‘user’] // user post;
$pass=md5($_POST[‘pass’]) // passpost;
kita belum memfilter proses pengambilan data yang di inputkan dari form login, guna memfilter ini agar karakter yang aneh atau yang tidak inginkan tidak ikut di proses, bagaimana cara memfilter karakter
CARA PERTAMA:
Cara pertama bisa menggunakan ini gaes..
function antiinjek2club($data){$filter=mysql_real_escape_string(htmlspecialchars(stripslashes(strip_tags($data, ENT_QUOTES))));
return $filter;
}
hasilnya..
<?php
mysql_connect(“localhost”,”root”,””) // koneksi ke database;
mysql_select_db(“contoh”) // pilih database;
function antiinjek2club($data){$filter=mysql_real_escape_string(htmlspecialchars(stripslashes(strip_tags($data, ENT_QUOTES))));
return $filter;
}
$user=antiinjek2club($_POST[‘user’]) // user post;
$pass=antiinjek2club(md5($_POST[‘pass’])) // passpost;
$cek=mysql_query(“select * from admin where user=’$user’ AND pass=’$pass'”) // cek ke query;
$ketemu=mysql_num_rows($cek) //menghitung jumlah query yang di cek;
$r=mysql_fetch_array($cek) ;
if($ketemu>0){
session_start();
$_SESSION[‘admin’]=$r[‘user’];
header(“Location:.”);
}
else{
header(“Location:.”);
}
?>
CARA KEDUA:
Cara kedua bisa juga menggunakan addslashes..
$user=addslashes(trim($_POST[‘user’]) // user post;
$pass=addslashes(trim(md5($_POST[‘pass’]))) // passpost;
Hasilnya..
<?php
mysql_connect(“localhost”,”root”,””) // koneksi ke database;
mysql_select_db(“contoh”) // pilih database;
$user=addslashes(trim($_POST[‘user’] // user post;
$pass=addslashes(trim(md5($_POST[‘pass’]))) // passpost;
$cek=mysql_query(“select * from admin where user=’$user’ AND pass=’$pass'”) // cek ke query;
$ketemu=mysql_num_rows($cek) //menghitung jumlah query yang di cek;
$r=mysql_fetch_array($cek) ;
if($ketemu>0){
session_start();
$_SESSION[‘admin’]=$r[‘user’];
header(“Location:.”);
}
else{
header(“Location:.”);
}
?>
Gimana sekarang ngerti kan cara patch bug dari inject :v jangan lupa share ya gaes :v
Baca juga pengertian: addslashes |
comment 0 komentar
more_vert