Instructeur: Oké, nu wil ik jullie
een SQL injectie laten zien en in een ander bestand en
in een andere pagina en
ik zal jullie een paar verschillende dingen laten
zien die je kunt doen om de kwetsbaarheid uit te buiten.
Dus het eerste wat ik ga doen is naar de login pagina
gaan die hier staat.
Gebruikersinfo.
Dus de eerste keer gingen we van daaruit naar de Login pagina, deze
keer gingen we naar de User Info pagina.
Deze pagina toont u dus de informatie over de gebruiker,
mits u de gebruikersnaam en het wachtwoord opgeeft.
Dus ik doe zaid en
zet mijn wachtwoord, 123456.
En het toont mijn gegevens, gebruikersnaam en wachtwoord en mijn
handtekening als aa.
Dus de verklaring die hier wordt uitgevoerd
is gelijk aan wat werd uitgevoerd toen je
inlogde.
Dus ster selecteren uit rekeningen
waarbij gebruikersnaam is wat je in het gebruikersveld zet
en wachtwoord is wat je in het wachtwoordveld zet.
Dus wat we nu gaan doen is een
andere manier zien om dit soort kwetsbaarheid
uit te buiten.
In de vorige video
deden we dat met een POST-tekstvak.
Dus alles wat je in het tekstvak
zette, werd via een POST-methode naar de webapplicatie gestuurd.
Nu, deze kwetsbaarheden kunnen bestaan in GET.
En wat ik bedoel met
Get, is wanneer je een Get doet, wanneer iets als GET wordt verzonden,
zie je dat hier in de URL.
Dus als je hier naar de URL
kijkt, zie je dat het wordt verzonden als de gebruikersnaam
zaid en het wachtwoord 123456.
Dus laat me deze URL even kopiëren.
En we gaan ermee spelen
vanaf de URL in plaats van op de webpagina.
Ik wil u een ander voorbeeld laten
zien, want op veel plaatsen zijn er
misschien niet eens tekstvakken,
bijvoorbeeld iets als nieuws en nieuws.
php,
dus we kunnen hier zien, bijvoorbeeld, in dit voorbeeld, is het index. php.
En in je pentest, zie je misschien
iets als nieuws. php en bijvoorbeeld
id is gelijk aan twee en dan kun je proberen
daar dingen in te injecteren.
Dus we hebben hier een voorbeeld
waar we dingen gaan injecteren
in het gebruikersnaam veld wat dit veld is en
we gaan hier dingen injecteren.
Dus elke keer als je een pentest uitvoert,
moet je proberen dit soort parameters
te injecteren.
Elke keer als je iets ziet. php en dan heb je
een parameter die gelijk is aan iets, probeer
daar dan altijd dingen in te injecteren en kijk
of het werkt voor jou.
Dus we hebben ook een manier gezien om de injectie te ontdekken
en dat was het gebruik van het aanhalingsteken en het gebruik
van de en.
Dus we doen een false en een true en en één
is gelijk aan één
en dan en één is gelijk aan
twee en als de server uitvoert wat we willen,
dan weten we dat er een SQL injectie is.
Ik ga je een andere manier
laten zien om deze exploits te ontdekken
en het is met behulp van de order door.
Zoals de naam al aangeeft,
wordt de order by verklaring gebruikt
om de resultaten die we op het scherm krijgen te ordenen op
basis van een specifieke kolom.
Dus onze injectie wordt zo.
Dus ik ga de volgorde per stuk doen.
Dus dit, als de injectie bestaat, zou moeten werken,
want in elke select
statement zou er minstens één kolom
geselecteerd moeten worden.
Daarom zeggen we, als
we bestellen op één, dat ik de
resultaten wil
ordenen op basis van de eerste
kolom.
En geef een true terug of iets wat we verwachten.
We moeten hier ook het commentaar toevoegen
en deze code uitvoeren.
Dus het is precies zoals vroeger.
Dus als we dit doen,
is dit onze URL en wat er gaat gebeuren in de database,
dus dit is de code die wordt
uitgevoerd in de database,
het gaat er zo uitzien.
Dus het wordt select ster van rekeningen
waar gebruikersnaam gelijk
is aan zaid en let op hoe dit de quote sluit
en we gaan een volgorde op één doen en er zou geen code moeten zijn
voor de en, en dit commentaar zal
de SQL interpreter vertellen om alles te negeren wat er na komt,
dus dit alles zal worden genegeerd.
Dus ik kopieer dit.
Dus je kunt deze injectie voor zaid order
by one in de naam plakken en
dat gaat werken, maar ik wil je een andere
manier laten zien door het via de
browser te injecteren.
Een ander ding dat ik wil dat je
opmerkt is dat wanneer
je dingen injecteert in de browser, de browser, de code moet worden gecodeerd.
Dus bijvoorbeeld, dit teken moet, wanneer
je het in de URL zet, meestal
geschreven worden als %23.
Spaties, bijvoorbeeld, worden omgezet
in %20 en %23 is het commentaar dat we gebruiken.
Dus ik kopieer dat en vervang mijn commentaar door dat.
Nu, je kunt HTTP Encoder googelen en
je zult zien dat er online tools zijn
die dit gewoon voor je omzetten.
Ik weet nu dat de hashtag kan worden
omgezet in %20.
Dus daarom gebruik ik het daar.
En ik druk op Enter.
En zoals je nu kunt
zien, zien we iets dat acceptabel is.
Niets aan de hand en dan toont hij me de informatie
over zaid 123456 en laat me de handtekening zien.
Dus het negeert het wachtwoord,
dus de injectie werkte en het
bestelt per één, dus het toont
me niets verkeerds.
Laten we proberen van dit getal een heel groot getal
te maken, dus ik zet er nu 10.000 of 100.000 in.
Dus wat we nu zeggen
is dat ik wil dat je de resultaten die
terugkomen van de huidige select statement ordent
op basis van kolom 100.000.
Nu is de kans groot dat er geen 100.000 kolommen worden gebruikt
in dit select statement en daarom
zou dit een fout moeten opleveren.
Dus als ik dit uitvoer,
zie je dat er een fout is.
En de fout zit hem in het sluiten van de order.
En nog steeds is er een kolom Onbekend voor 100.000 en dat is geweldig,
want nu weten we dat de database
uitvoert wat we willen.
Dus toen we zeiden dat het de resultaten moest ordenen
op basis van de eerste kolom, toonde het ons resultaten.
Het volgde dus wat we zeiden en toen
we zeiden dat het de
resultaten moest ordenen op basis van een kolom die
niet bestaat, gaf het een foutmelding.
Dus het is duidelijk kwetsbaar voor SQL injecties.