[STUT] SQLi (SQL Injection)
|
23-02-2013, 15:21
(Denne besked var sidst ændret: 17-07-2013, 12:38 af Morph3s.)
|
|||
|
|||
[STUT] SQLi (SQL Injection)
NOTE: Det her er kun til uddannelsesmæssige formål alene. Der tages intet ansvar for forkert brug af dette.
Indholdsfortegnelse
1. Teori Navnet SQL injection kommer af injektion i SQL databaser. Det mest hyppigeste er SQL injektion i MySQL databaser via. php scripts som ikke filtrere input ordentligt fra. Dette sker oftest via. kommandoer igennem GET/POST parametre. Når php scriptet ikke filtrere ordentligt fra kan brugeren overtage kontrollen over hvilke kommandoer der sendes til databasen. Dette kan bruges til at trække informationer ud af databasen såsom brugernavne og kodeord. Du kan finde en liste over disse kommandoer i Ekstra referencer. SQL Injection kan forebygges ved at filtrere alt input der kommer fra brugeren, og sørge for at der ikke bliver sat nogle andre kommandoer i stedet for det der skulle være. 2. Finde sårbarheden For at finde sårbarheden i siden skal du først finde et sted hvor siden kører nogle scripts som kan sende kommandoer til databasen. Dette kun f.eks være PHP eller ASP. I vores eksempel vil vi benytte PHP. Når du har fundet en side der benytter PHP skal du finde nogle input felter og teste. Dette kan være alt lige fra registrerings formularer, til søge felter. Vær kreativ! For oftest når du klikker på en nyhed spørg siden ned i deres database efter nyheden. En typisk måde at se om den modtager nogle ting er ved at kigge i URL'en efter GET parametre. GET parametre er dem som vises efter .php som f.eks Kode: www.target.com/news.php?id=23 For at teste om hvorvidt den er sårbar, kan man indtaste noget som SQL databasen ikke forstår og giver en fejl meddelse ved. Hvis vi kan indtaste noget i stedet for 23 som giver vi en fejl kan vi vide at php scriptet er ligeglad med hvad vi sætter i stedet for 23. Der bruges hyppigst tegnet: Kode: ' URL'en bliver nu til: Kode: www.target.com/news.php?id='23 Hvis siden returnere en fejl, i form af en mysql fejl(Dette kan også være andre ting i form af manglende elementer osv.) så ved vi at siden ikke filtrere vores input, og vi kan nu indsætte vores sql kommandoer og sende dem afsted sammen med parameteren id og trække ting ud af databasen 3. Udnyttelse af sårbarheden For at udnytte sårbarheden skal vi nu til at sende nogle SQL kommandoer afsted via GET parameteren ID som vi fandt ud af var sårbar. Det første vi skal gøre er at "tælle" antal kolonner i databasen. Dette er de forskellinge kolonner der er i databasen. Databasen kan indeholde f.eks news, username, password, address, emails, contacts. Dette ville udgøre 6 kolonner i databasen. Disse kolonner optælles ved brug at sql kommandoen Kode: order by Kode: www.target.com/news.php?id=23 order by 1 Nu skal vi så blot øge det nummer og tælle opad indtil vi ikke længere kan. Kode: www.target.com/news.php?id=23 order by 1 Fejlen kommer når vi rammer 7 fordi der ikke findes 7 kolonner. Og når der er fejl ved 7 ved vi at der findes kun 6 Fejlkoden er typisk: Kode: Unknown column in order clause Herefter bruger vi union select. Det er til at vælge dem alle. Og når disse så er valgt kan vi bruge dem til at returnere ting fra databasen som så vises på siden. Kode: www.target.com/news.php?id=23 union select 1,2,3,4,5,6 Nu vil der på siden vises nogle numre. Hvis f.eks 2 pludselig vises betyder dette at alt hvad du smider ind istedet for 2 tallet vil vises på det sted. Hvis vi f.eks smider @@version ind som viser versions nummeret, vil det komme frem. Kode: www.target.com/news.php?id=23 union select 1,@@version,3,4,5,6 4. Trække information ud af databasen(Kommer senere) 5. Ekstra referencer SQL Kommandoer |
|||
24-02-2013, 11:42
|
|||
|
|||
RE: [STUT] SQLi(SQL Injection)
Det ser godt ud! Glæder mig til at se det næste der kommer!
yolo
|
|||
24-02-2013, 21:44
|
|||
|
|||
RE: [STUT] SQLi(SQL Injection)
God guide som altid morph :D
|
|||
24-02-2013, 22:55
|
|||
|
|||
RE: [STUT] SQLi(SQL Injection)
Lækker guide.
Er rimeligt noob med sql injections, så lækkert nok ;) |
|||
20-03-2013, 21:51
|
|||
|
|||
RE: [STUT] SQLi(SQL Injection)
God guide! Glæder mig til at se næste afsnit når det engang er skrevet.
"The only truly secure system is one that is powered off, cast in a block of concrete and sealed in a lead-lined room with armed guards." — Gene Spafford
|
|||
01-06-2013, 07:03
|
|||
|
|||
RE: [STUT] SQLi (SQL Injection)
(01-06-2013, 03:19)Sømanden Skrev: Fed Fed Fed guide! Mange tak. Sig endelig til hvis der mangler noget :)
Følg mig på twitter: https://twitter.com/Morph3s
|
|||
01-06-2013, 09:51
|
|||
|
|||
RE: [STUT] SQLi (SQL Injection)
"4. Trække information ud af databasen(Kommer senere)"
Hvornår ville du update med den her del? ;) |
|||
01-06-2013, 10:48
|
|||
|
|||
RE: [STUT] SQLi (SQL Injection)
(01-06-2013, 09:51)danbirk Skrev: "4. Trække information ud af databasen(Kommer senere)" Har ikke rigtig haft tid til det, men den kommer sikkert på et tidspunkt :)
Følg mig på twitter: https://twitter.com/Morph3s
|
|||
01-06-2013, 13:00
|
|||
|
|||
RE: [STUT] SQLi (SQL Injection)
Glæder mig faktisk til at se den næste del :P
Det ser lovende ud. |
|||
28-06-2013, 05:55
(Denne besked var sidst ændret: 28-06-2013, 05:57 af cBOAT.)
|
|||
|
|||
RE: [STUT] SQLi (SQL Injection)
Rigtig god, tak. Ser frem til yderligere information.
|
|||
|
User(s) browsing this thread: 1 Gæst(er)