Sådan SQL-injektion

Hvad er SQL Injection (SQLi)?

SQL-injektionen er en af ​​de mest almindelige webangrebsmekanismer, der bruges af angribere til at stjæle optegnelser og følsomme optegnelser fra en virksomhed eller en social medieplatform. Selvom SQL Injection kan miste enhver information en applikation, der bruger en SQL-database, er den mest almindeligt brugt til at angribe websteder. SQL Injection er en kodeinjektionsteknik, som hackere kan bruge til at indsætte ondsindede SQL-sætninger i inputforespørgsler til udførelse gennem den underliggende SQL-database. Denne metode er gjort mulig på grund af forkert kodning af skrå webpakker. SQL-injektionen stiger på grund af den kendsgerning, at adgang til inputfelter, der er gjort tilgængelige for brugeren, skal indtaste alle de dårlige typer af SQL-sætninger for at gå igennem og indsætte forespørgsler i databasen direkte.

Forskellige typer injektioner



  • Rediger SQL-forespørgslen og hent yderligere information fra databasen, vi kan sige dette ved at hente skjulte data fra tabeller.
  • Forstyrr forretningslogikken og modificer forespørgslen for at ændre applikationslogikken.
  • Hent data fra forskellige tabeller i databasen og angreb på dem, dette kaldes UNION-angreb.
  • Undersøgelse af databasen, hvor du kan udtrække information om databasens version og struktur.

Få skjulte data

Lad os skrive denne URL i din browser og få bonuskategorierne fra tabellen:

https://insecure-website.com/products?category=Bonus

Dette får applikationen til at lave et SQL-spørgsmål for at hente information om de relevante varer fra databasen som denne:

VÆLG * FRA varer HVOR kategori = 'Bonus' OG frigivet = 1

Denne SQL-forespørgsel beder databasen om at returnere:

  • al info (*)
  • Fra produktpulten
  • Hvor kategorien er Bonus
  • Og udgivet er 1

Softwaren sætter ikke noget forsvar mod SQL-injektionsangreb i kraft, så en angriber kan samle et angreb som:

https://insecure-website.com/products?category=Bonus’ – –

Resultatet af ovenstående forespørgsel er:

VÆLG * FRA produkter HVOR kategori = 'Bonus'-' OG frigivet = 1

Nøglekomponenten lige her er, at serien med dobbeltstreg — er en bemærkningsindikator i SQL, og betyder, at resten af ​​spørgsmålet tolkes som en kommentar. Dette fjerner med succes resten af ​​forespørgslen, så den ikke længere inkluderer OG lanceret = 1. På denne måde vises hvert enkelt produkt, såsom ikke-udgivne produkter.

En anden metode til SQL-injektion:

https://insecure-website.com/products?category=Bonus’+OR+1=1–

Resultatet:

VÆLG * FRA produkter HVOR kategori = 'Bonus' ELLER 1=1–' OG frigivet = 1

Ved at bruge ovenstående forespørgsel kan du nemt angribe databasen.

Skift applikationslogikken

Omgå login-kontoen ved at bruge nedenstående forespørgsel:

VÆLG * FRA brugere HVOR brugernavn = 'john' OG adgangskode = 'johnwilliam'

Angriberens log med brugernavnet uden adgangskode, i SQL-forespørgsel brug – – dobbelt bindestreg adgangskode og kommenter det i where-klausulen. Send for eksempel en forespørgsel til brugernavnet administrator og det tomme adgangskodefelt. Forespørgsel er:

VÆLG * FRA brugere HVOR brugernavn = ‘administrator’ – – ‘ OG adgangskode =

De er også mange metoder til SQL-injektion.

Sådan SQL-injektion på login-siden

En simpel PHP-kode til SQL Injection på login-siden er givet nedenfor:

$uname = $_POST [ ' uname ' ] ;

$passwrd = $_POST [ ' passwrd ' ] ;

$query = ' vælg brugernavn, pass fra brugere, hvor brugernavn = ' $uname ' og adgangskode = ' $passwrd

$result = mysql_query ($query);

$rows = mysql_fetch_array ($result);

Hvis ( $rækker )

{

echo ‘Du har logget ind med succes’;
create_session( ) ;

}

andet {

echo ' Bedre held næste gang ' ;
}