Dengan demikian SQL Injection dapat pula dikatakan sebagai kegiatan menipu query dari database, sehingga seseorang dapat mengetahui dan mendapatkan informasi yang terdapat di sana. Menipu di sini adalah dalam bentuk suntikan, lebih tepatnya menyisipkan kode SQL tambahan ke dalam kode yang asli. Sehingga kemudian yang dieksekusi adalah perintah SQL Injection tersebut.
Sebagai contoh, coba Anda perhatikan halaman yang dipakai untuk melakukan submit data, misalnya pada halaman login. HTML kadang memakai perintah POST untuk mengirimkan parameter ke halaman ASP/PHP lainnya. Oleh sebab itulah,kita tidak dapat melihat parameter pada URL. Namun, kita masih bisa memeriksa source code HTML dan mencari tag FORM dalam kode HTML.
Di sini saya akan membuat sebuah source code untuk melakukan login menggunakan PHP. Contoh seperti dibawah ini:
<html>
<head>
<title>inject</title>
</head>
<body>
<center>
<h2>Login Admin</h2>
<br>
<form method="post">
Nama User <input type="text" name="nama">
<br>
Password <input type="password" name="password">
<br>
<input type="submit" name="submit" value="ENTER">
</form>
</center>
</body>
</html>
<?php
if ($submit or $nama) {
$konek=mysql_connect("localhost","root","root") or die
(mysql_error());
$db=mysql_select_db("db_adminx");
$sql="select count(1) as ada from tbluser where
nama=' " .$nama. " ' and password=md5(' "
.$password. " ')";
echo $sql. "<br>";
$query=mysql_query($sql) or die(mysql_error());
$result=mysql_fetch_array($query);
$jml=$result[ada];
mysql_close();
if ($jml>0) {
echo "Terimakasih telah memasuki halaman ini";
} else {
echo "Maaf, Username dan Password salah";
}
}
?>
Contoh source code halaman login |
Tampilan halaman login |
Melihat source code halaman login |
Source code halaman login |
Jika kita perhatikan dengan seksama pada source code. Apa pun yang berada di antara <FORM> dan </FORM> memiliki parameter potensial yang bisa berguna untuk dieksploitasi. Ada banyak halaman web yang menerima input selain halaman login, seperti Search, Feedback, buku tamu, dsb. Namun apabila Anda tidak menemukan halaman yang menerima input, Anda bisa mencari halaman yang menggunakan ekstensi PHP, ASP, JSP, atau CGI. Khususnya untuk URL yang menerima parameter seperti:
http://namasitusweb.com/index.php?id=9
Atau:
http://namasitusweb.com/index.asp?id=99
Atau:
http://namasitusweb.com/index.asp?id=99
Pada dasarnya ada beberapa type SQL Injection, yaitu:
- Error Based SQL Injection
- Union Based SQL Injection
- Blind SQL Injection
Dari sisi metode yang digunakan, pada Error Based SQL Injection dikelompokkan menjadi dua yaitu:
GET method
Inilah yang paling umum atau banyak digunakan untuk memasukkan perintah SQL Injection melalui URL sebuah situs web pada address bar, sehingga metode ini dikenal juga sebagai URL Based SQL Injection. Disebut metode GET kerena menggunakan parameter GET untuk memasukkan atau menyuntikan perintah.
POST method
Metode POST berasal dari variable yang ada pada form, contohnya seperti form login atau form pencarian. Cara untuk mengidentifikasinya juga sama, dengan memberikan karakter ' atau - atau karakter ascii yang bisa menghasilkan error. Hal ini yang sering digunakan untuk mem-bypass sebuah halaman login tanpa harus mengetahui username atau password yang digunakan.