Sebagai contoh, kita dapat melewati login administrator pada kode sebelumnya dengan memasukkan: aaa 'atau 1 = 1-- atau '=''or' dalam formulir login. Untuk melihat contohnya, coba masukkan pada form username untuk password bisa diisikan dengan sembarang atau sama dengan username.
Untuk kumpulan websitenya anda bisa cek pada artikel Website Vuln - Admin Login Bypass
Bagaimana cara untuk memperbaiki bug ini?
Cek Pada Script dibawah ini :
$message = “”;
if(isset($_POST[‘submit’])){
$username= ($_POST[username]);
$password = md5($_POST[‘password’]);
$query = “SELECT * FROM admin WHERE username = ‘$username’ and password = ‘$password’ and usertype = ‘1’”;
$query_result = mysqli_query($con, $query);
if(mysqli_num_rows($query_result)){
$row = mysqli_fetch_assoc($query_result);
$_SESSION[‘admin_id’] = $row[‘id’];
$_SESSION[‘username’] = $row[‘username’];
header(“location: index.php”);
}else{
$message = “Username and password is not matched.”;
}
}
?>
Cek dibagian $username= ($_POST[username]); Dalam script di atas tidak ada pemfilteran karakter yang akan menghasilkan bug, sehingga defacer dapat mengeksploitasi dengan memasukkan permintaan inject sehingga mereka dapat masuk sebagai admin. Solusinya : kamu cukup ubah script diatas menjadi $username= addslashes($_POST[username]);
Sekarang situs web Anda memiliki pemfilteran karakter yang tepat sehingga defacer tidak akan dapat menginject kueri disitus web Anda. Semoga bermanfaat