Sebelum membahas terkait dengan SQL Injection, sebaiknya pelajari dasar tentang web security https://miqbal.staff.telkomuniversity.ac.id/keamanan-web-web-security/ dan SQL Injection https://miqbal.staff.telkomuniversity.ac.id/sql-injection/
Prerequisite
Install XAMPP, jalan Apache dan MySQL
Buat database baru dengan phpmyadmin, dengan nama kamjar
Sebelum melakukan injeksi terlebih dahulu kita membuat database dummy, dengan cara mengunduh link berikut
databaseblog
File yang telah didownload kemudian di ekstrak dan diletakkan pada folder C:\xampp\htdocs , sehingga
Untuk password default mysql dengan menggunakan xampp adalah user =root dan passwordnya dikosongkan saja.
Sementara untuk mengkoneksikan antara php dengan dengan mysql dapat menggunakan perintah mysqli_connect . Berikut contoh pada file koneksi.php
Import database
Lakukan upload database pada menu phpmyadmin di menu impor, file dapat diambil pada folder blog yang telah didownload
Letakkan folder yang telah didownload pada folder C:\xampp\htdocs\blog
berikut merupakan script index.php sebagai halaman pertama dari blog tersebut
Halaman http://127.0.0.1/blog/admin_login.php
script untuk halaman admin.php
script untuk halaman login dengan admin_login.php
Pada database kamjar terdapat 2 tabel yaitu post dan user, user sendiri terdiri dari 2 username dan password. Disana dapat terlihat passwor yang tidak terenkripsi
Skenario ini masuk sebagai user csi dan password testing
Login dengan menggunakan user dan password yang telah disediakan oleh database
Proses SQL Injection
Iterasi 1
Mengetahui username dan password
select * from user where username = ‘csi’ and password = ‘testing’
Iterasi 2
Mengetahui username, tapi tidak mengetahui password
Karena passwordnya tidak sesuai maka bernilai 0, maka akan memberikan inputan usernamat atau password salah!
Teknik dengan menggunakan komentar pada SQL yaitu ‘– ‘. dash dash space
select * from user where username = ‘csi’–
Iterasi 3
Tidak mengetahui usernama dan password
select * from user where username = ‘abc’ or 1=1
Pada halaman login
abc’ or 1=1 —
Solusi
Jangan pernah memasukkan input user kedalam query tanpa di filter terlebih dahulu, ada berbagai macam cara, berikut merupakan salah satu tekniknya
$username = mysqli_real_escape_string ($conn, $_POST[‘username’]);
$password = mysqli_real_escape_string ($conn, $_POST[‘password’]);
Selamat mencoba, semoga berhasil
Jika tertarik tentang keamanan web security tentang cross site scripting dapat dipelajari https://miqbal.staff.telkomuniversity.ac.id/teknik-cross-site-scripting/