Sebelum ke tutorial gua akan menjelaskan sedikit tentang Bypass admin bug ini tidak jauh beda dengan SQL injection jadi bug ini memungkinkan para attacker dapat menyerang situs dengan cara memasukkan user name dan password tertentu tanpa perlu meng-exploit Web tersebut
Beberapa variasi injeksi login
'=''or'
‘ or 1=1 or ”=’
‘ or 1=1-
‘ or 1=1#
Udah segitu aja soal banyak cape gw :v
Lalu, bagaimana menutup bug tersebut? Saya menutup/menambal bug bypass admin login dengan menggunakan fungsi PHP addslashes(). Fungsi addslashes() sendiri ditambahkan pada php versi ke 4+. Efek yang ditimbulkan saat kita menggunakan fungsi addslashes() pada suatu string adalah menambahkan simbol backslash (\). Fungsinya untuk mencegah attacker memasukan script yang mengandung kutip pada website kita
Langkah patch bug nya
1.kita liat bagian login.php
<?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:.”);
}
?>
2.kita cek euy mana bagian yang ada bug nya
$user=$_POST[‘user’] // user post;
$pass=md5($_POST[‘pass’]) // passpost;
Bug nya adalah bagian code yang belum terfilter,jadi kita cuma menambahkan code pemfilter password agar tidak bisa terinjeksi
3 . kita tambahkan filter pada code di atas
function antiinjektion($data){$filter=mysql_real_escape_string(htmlspecialchars(stripslashes(strip_tags($data, ENT_QUOTES))));
return $filter;
}
4. Kita gabungkan dengan kode yang di atas menjadi
<?php
mysql_connect(“localhost”,”root”,””);
mysql_select_db(“contoh”);
function antiinjektion($data){$filter=mysql_real_escape_string(htmlspecialchars(stripslashes(strip_tags($data, ENT_QUOTES))));
return $filter;
}
$user=antiinjektion($_POST[‘user’]);
$pass=antiinjektion(md5($_POST[‘pass’]));
$cek=mysql_query(“select * from admin where user=’$user’ AND pass=’$pass'”);
$ketemu=mysql_num_rows($cek);$r=mysql_fetch_array($cek) ;
if($ketemu>0){
session_start();.
$_SESSION[‘admin’]=$r[‘user’];
header(“Location:.”);
}
else{
echo “Error”;
}
?>
Lalu kita save dengan nama ya pasti login.php cok masa wibu.php
Follow iG
faisyal_randovolsky
Faisyal Randovlsky
3 Comments
kontol
ReplyDeleteHilih
ReplyDeleteterima kasih gan baca juga di
ReplyDeletewww.naufalardhani.com