Heim >Datenbank >SQL >Das Prinzip des SQL-Injection-Angriffs

Das Prinzip des SQL-Injection-Angriffs

angryTom
angryTomOriginal
2020-02-13 17:13:3316449Durchsuche

Das Prinzip des SQL-Injection-Angriffs

Das Prinzip des SQL-Injection-Angriffs

Ein böswilliger Benutzer fügt während der Übermittlung der Abfrageanforderung eine SQL-Anweisung in den Anforderungsinhalt ein. und gleichzeitig das Programm selbst. Übermäßiges Vertrauen in Benutzereingabeinhalte ohne Filterung von SQL-Anweisungen, die von böswilligen Benutzern eingefügt wurden, was dazu führt, dass SQL-Anweisungen direkt vom Server ausgeführt werden.

SQL-Injection-Angriffsklassifizierung

(1) Verschiedene Klassifizierungen von Injektionspunkten

Injektion vom numerischen Typ Injektion vom String-Typ

(2) Verschiedene Klassifizierungen von Übermittlungsmethoden

GET-Injektion POST-Injektion COOKIE-Injektion HTTP-Injektion

(3) Verschiedene Klassifizierungen von Methoden zum Erhalten von Informationen

Boolesche Blindinjektion basierend auf Zeitblinde Injektion basierend auf Fehlerberichten

SQL-Injection-Angriffsfall:

1. Sehen Sie sich den Injektionsfall des Artikels an:

Sehen Sie sich den Injektionsfall an eines Artikels Wenn der URL-Parameter lautet: ?id=1

, können Sie durch Einfügen des Befehls: ?id=1 oder 1=1 alle Artikel in der gesamten Datentabelle auflisten.

Wenn auf den anzeigenden Benutzer über user_id zugegriffen wird, wie zum Beispiel:? uid=1

Dann können Sie durch Einfügen des Befehls: ?id=1 oder 1=1 alle Datensätze der gesamten Benutzertabelle anzeigen

Der SQL-Befehl lautet wie folgt:

Der SQL-Befehl, der ?id=1 übergibt, ist: select * from Article where id=1 Diese Anweisung fragt 1 Struktur ab

Der SQL-Befehl, der ?id=1 und 1=1 übergibt : Wählen Sie * aus Artikel mit ID=1 oder 1=1 aus. Diese Anweisung fragt die Datensätze der gesamten Tabelle ab.

2. Benutzer-Login-Injection-Fall:

Das Anmeldeformular hat die Feld „Benutzername“ und die Abfrageanweisung lautet: Wählen Sie * aus Benutzern aus, wobei Spitzname = „{Benutzername}“ ist

Sie können das Textfeld „Benutzername“ ausfüllen: (' oder 1 = '1), damit das injizierte SQL Der Befehl kann erstellt werden: Wählen Sie * aus Benutzern aus, bei denen Benutzername = '' oder 1 = '1' ist, damit der Zugriff auf das System einfacher ist.

3. Erraten der SQL-Injection-Tabelle:

Füllen Sie das Benutzernamenfeld auf der Anmeldeseite aus: (' oder 1=(select count(0) from t_porg_document) oder 1='1), Der injizierte SQL-Befehl kann wie folgt erstellt werden: Wählen Sie * aus Benutzern aus, bei denen Benutzername='' oder 1=(wählen Sie count(0) aus Aufladung aus) oder 1='1'

Auf diese Weise können Sie erraten, ob die Wenn eine Aufladetabelle vorhanden ist, wird die Anweisung normal ausgeführt, andernfalls wird ein Fehler gemeldet.

Nachdem Sie den Tabellennamen erraten haben, können Sie die Datentabelle hinzufügen, löschen, ändern und überprüfen, z. B.:

Geben Sie im Feld „Benutzername“ der Anmeldeseite Folgendes ein: ('; Von Benutzern löschen) können gefährliche SQL-Befehle erstellt werden: select * from users where user_name=''; delete from users;

Durch Hinzufügen von Semikolons können beliebige Hinzufügungen, Löschungen, Änderungen und Abfrage-SQL-Anweisungen erstellt werden , und die gesamte Datenbank kann vom Angreifer nach Belieben manipuliert werden.

PHP chinesische Website, es gibt viele kostenlose SQL-Tutorials, jeder ist herzlich willkommen, es zu lernen!

Das obige ist der detaillierte Inhalt vonDas Prinzip des SQL-Injection-Angriffs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn