Heim  >  Artikel  >  Datenbank  >  Was ist MySQL-Fehlerinjektion?

Was ist MySQL-Fehlerinjektion?

WBOY
WBOYOriginal
2022-03-09 13:58:132852Durchsuche

In MySQL bezieht sich Fehlerinjektion auf das Erstellen geeigneter Anweisungen, um die gewünschten Daten über die auf der Seite gemeldeten Fehlerinformationen zu erhalten. Wenn das Anwendungssystem die Datenbankfehlerfunktion nicht schließt, können Sie die Funktion extractvalue () verwenden, um die Informationen zurückzugeben im Ziel-XML enthalten. Die Zeichenfolge des Abfragewerts.

Was ist MySQL-Fehlerinjektion?

Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.

Was ist MySQL-Fehlerinjektion?

1. Was ist Fehlerinjektion? Und unter welchen Umständen wird es verwendet?

  Die Fehlerinjektion kann auch als eine Art blinde Injektion bezeichnet werden. Erstellen Sie die Nutzlast so, dass die Informationen durch die Fehleraufforderung wiedergegeben werden. Sie können die Fehlerinjektion in Betracht ziehen, wenn eine gemeinsame Abfrage die offensichtliche Position nicht offenbaren kann.

Wie entsteht also die Fehlerinjektion?

Erstens hat das Anwendungssystem die Datenbankfehlerberichtsfunktion nicht geschlossen. Bei einigen SQL-Anweisungsfehlern wird dies direkt auf der Seite angezeigt, und einige geben sogar den Datenbanknamen und den Tabellennamen direkt preis Es ist wichtig, dass der Hintergrund nicht auf MySQL reagiert.

2. Häufig verwendete Funktionen für die Fehlerberichterstattung

Hier verwende ich die Funktion extractvalue(), deren Funktion darin besteht, eine Zeichenfolge zurückzugeben, die den Abfragewert enthält Ziel-XML

EXTRACTVALUE (XML_document, XPath_string) : Der erste Parameter: XML_document ist im String-Format, das ist der Name des XML-Dokumentobjekts; der zweite Parameter: und extractvalue(1,concat(0x7e,(select @@version) ,0x7e))--+. Unter diesen ist concat der Parameter in concatenation () und 0x7e ist das ~-Symbol nach der Dekodierung. --+ ist das Kommentarzeichen. Kommentieren Sie alle nachfolgenden Anweisungen im Quellcode aus, um Fehler zu vermeiden. Nach dem Test sind die Ergebnisse wie folgt:

     //Die 1 vor concat ist der erste Parameter der Funktion extractvalue(), der durch eine beliebige Zahl ersetzt werden kann

     //Das zweite 0x7e in der Anweisung kann weggelassen werden

  2. Datenbanknamen abrufen

  Anweisungen verwenden

 1‘ and extractvalue(1,concat(0x7e,(select database()),0x7e))--+,

 3. Tabellennamen abrufen

     1’ and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='security'),0x7e))--+. 其中group_concat将tale_name字段的所有行放在一行上显示出来,如下所示

 4. Daten abrufen

    1' and extractvalue(1,concat(0x7e,(select * from (select username from users limit 0,1) as a),0x7e))--+. 修改其中的limit参数即可获取users表中的不同行内容

Empfohlenes Lernen:

MySQL-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist MySQL-Fehlerinjektion?. 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