This page has been robot translated, sorry for typos if any. Original content here.

SQL-Injektionswerkzeug 4

Sagen Sie einfach, dass es eine Änderung gab, die Stelle, an der die Anfragen eingefügt werden, ist mit {SQLINJ} markiert, das heißt, wenn der Parameter getid angreifbar ist, dann in der URL, die wir schreiben

http://localhost/test.php?getid=1{SQLINJ}
Und wenn das ein Textparameter ist, wird die URL sein

http://localhost/test.php?getid=1'{SQLINJ}
Nun, alles andere ist eigentlich so, wer es verstehen will.

Das Programm kann durch animierte Viren wie zB Kaspersky Antivirus 7.0 als HackTool definiert werden
Erkennungsbericht: Schadprogramm HackTool.Win32.SQLInject.i 4 Datei: s-tool.exe


software.gif
SQL-Injektionswerkzeug 4
sipt4.rar [2437KB]

Handbuch zu SQL Injection TooL 3

1. Einleitung.
Im Allgemeinen, hier endlich haben die Hände den Punkt erreicht, ein Handbuch zu meinem Prog zu schreiben. Bei 95% der Fragen zum Programm finden Sie die Antwort hier.

2. Beginnen Sie zu verwenden.

Als Erstes geben Sie den Pfad zum anfälligen Skript, den HTTP-Server-Port, den Proxy- Server- Proxy auf der Registerkarte EINSTELLUNGEN -> MAIN ein , setzen das Server-Timeout auf der Registerkarte EINSTELLUNGEN -> MAIN in Millisekunden und wählen die Angriffsmethode. 2.1.

2.1.1 Die GET-Methode
Die Methode wird verwendet, wenn die Injektion im Parameter GET vorhanden ist.
Code: Beispiel: http://www.target.ru/vulnscript.php?id=1
Wenn der ID-Parameter angreifbar ist, nimmt die Anforderung an den Server das Formular an
Code: http://www.target.ru/vulnscript.php?id=1{SQL}

2.1.2 Methode GET (mit Cookie)
Die Methode wird verwendet, wenn die Injektion in Cookies vorhanden ist, aber GET verwendet wird
Code: Beispiel: http://www.target.ru/vulnscript.php?id=1
Wenn der VulnCook-Parameter in Cookies angreifbar ist, wird die Anfrage an den Server in der Form ausgeführt

Code: GET /vulnskript.php?id=1 HTTP / 1.0
Gastgeber: www.target.ru
Cookie: VulnCook = {SQL}
Verbindung: Schließen

Es sollte beachtet werden, dass wenn alle Cookie-Parameter verwendet werden, alle unverwundbaren Parameter in die Tabelle eingegeben werden, die erscheint, wenn die Schaltfläche Cookie-Parameter gedrückt wird und der verletzbare Parameter in das Feld Verwundbares Parameter eingegeben wird und sein üblicher Wert in das Feld Wert eingegeben wird POST-Parameter.

2.1.3 Die Cookie-Methode (GET)
Die Methode wird verwendet, wenn die Injektion im GET-Parameter vorhanden ist, aber auf dem Server muss ein bestimmter Cookie (NeedCook) in den Header gesendet werden, z. B. für die Autorisierung
Code: Beispiel: http://www.target.ru/vulnscript.php?id=1{SQL}
Wenn der ID-Parameter angreifbar ist, nimmt die Anforderung an den Server das Formular an

Code: GET /vulnscript.php?id=1{SQL} HTTP / 1.0
Gastgeber: www.target.ru
Cookie: NeedCook = phpsession
Verbindung: Schließen

2.1.4 POST-Methode
Die Methode wird verwendet, wenn die Injektion im POST-Parameter vorhanden ist.
Code: Beispiel: http://www.target.ru/vulnskript.php
Wenn der ID-Parameter angreifbar ist, nimmt die Anforderung an den Server das Formular an

Code: POST /vulnskript.php?id=1 HTTP / 1.0
Gastgeber : www.target.ru
Verbindung: Schließen

Id = {SQL}

2.1.5 Die POST-Methode (mit Cookie) ist ein sehr seltener Fall
Die Methode wird verwendet, wenn die Injektion in Cookies vorhanden ist, aber POST verwendet wird
Code: Beispiel: http://www.target.ru/vulnskript.php
Wenn der VulnCook-Parameter in Cookies angreifbar ist, wird die Anfrage an den Server in der Form ausgeführt

Code: POST /vulnskript.php HTTP / 1.0
Gastgeber: www.target.ru
Cookie: VulnCook = {SQL}
Verbindung: Schließen

2.1.6 Cookie-Methode (POST)
Die Methode wird verwendet, wenn die Injektion im POST-Parameter vorhanden ist, aber auf dem Server muss ein bestimmter Cookie (NeedCook) in den Header gesendet werden, z. B. zur Autorisierung
Code: Beispiel: http://www.target.ru/vulnskript.php
Wenn der ID-Parameter angreifbar ist, nimmt die Anforderung an den Server das Formular an

Code: POST /vulnskript.php?id=1{SQL} HTTP / 1.0
Gastgeber: www.target.ru
Cookie: NeedCook = phpsession
Verbindung: Schließen

id = 1 {SQL}

2.2 Schlüsselwort oder Wortgruppe (Textfeld String)

Hier wird ein Wort eingegeben, das wir auf diese Weise finden können.

Ein Beispiel für die GET-Methode,
Erster Blick
Code: http://www.target.ru/vulnscript.php?id=1
Dann schauen wir
Code: http://www.target.ru/vulnscript.php?id=2
wir finden was hier ist
Code: http://www.target.ru/vulnscript.php?id=1
was nicht hier ist (wir vergleichen sozusagen)
Code: http://www.target.ru/vulnscript.php?id=2
In der Nähe gibt es ein Feld, in dem ein Wert gefunden und nicht gefunden wird , es ist nur notwendig, eine Suchmethode zu wählen,

GEFUNDEN - Dieser Codeabschnitt oder diese Sätze werden als Grundlage für die Richtigkeit verwendet (eine positive Schlussfolgerung, dass die Injektion korrekt durchgeführt wurde).

NICHT GEFUNDEN - Dieser Teil des Codes oder der Sätze wird als Grundlage für die NICHT-Richtigkeit verwendet
(auch eine positive Schlussfolgerung, dass die Injektion korrekt durchgeführt wurde)

TIPP: Um die Suche zu automatisieren, können Sie die Schaltfläche AUTO DETERMINE verwenden. Es ist jedoch zu beachten, dass eine falsche Definition oder eine falsche Definition nicht vorhanden sein kann, wenn ein Teil des Schlüsselworts in den Tags enthalten ist.

2.3 Verwenden Sie das Kontrollkästchen "Grundlegende Autorisierung" und die Felder " Login" und " Passwort" , um bestimmte Standorte zuzulassen oder auf Dateien zuzugreifen.

3.1 Als nächstes müssen Sie die Anzahl der Felder festlegen, die in der Abfrage zur Datenbank verwendet werden. Dies kann durch Klicken auf den Button "LET KNOW QUANTITY" erfolgen.

Es gibt mehrere Möglichkeiten zur Fehlkalkulation:

3.1.1 Das Drop-Down-Menü "USE METHOD"
Hier können Sie festlegen, nach welcher Methode eine Fehleinschätzung vorgenommen werden soll
- UNION SELECT
- ORDER BY
- GROUP BY
Im Allgemeinen ist die gebräuchlichste Methode ORDER BY und UNION SELECT
Die bevorzugte Methode für das Programm ist jedoch UNION SELECT, da diese Methode die für mehrere Programmfunktionen benötigten Ausgabefelder ( Textfeld FELD UNTERSTÜTZT DRUCKEN ) sofort ermittelt.

Wenn Sie die Anzahl der Abfragefelder mithilfe der Methoden ORDER BY und GROUP BY festgelegt und erfolgreich ermittelt haben, sollten Sie die Anfangsnummer der Suchfelder und die endgültige Zahl gleich der gefundenen Nummer angeben und die UNION SELECT-Methode zum Definieren der Felder mit Ausgabe auswählen und die Schaltfläche drücken «LET KNOW QUANTITY» wieder.

3.1.2 Häkchen Bestimmen, ob Druckfelder mit LIMIT gedruckt werden sollen
Es wird als alternative Möglichkeit zur Suche nach Feldern mit Ausgabe benötigt.

HINWEIS: Sie können auch den Wert eines anfälligen Parameters durch einen nicht realisierten Wert ersetzen, um die Felder mit Ausgabe zu bestimmen, indem Sie sie erneut mit dem Häkchen 3.1.2 kombinieren

Nach der erfolgreichen Auswahl der Anzahl der Felder, wenn Sie die GET-Methode verwenden, haben Sie eine Zeile im Feld Arbeits- URL . Klicken Sie auf die Schaltfläche "Im Browser anzeigen", wird diese Abfrage im Browser geöffnet.

4.1 Ermitteln der Datenbank (SQL Injections -> Identifying DB)
4.1.1 Art des DB - Im Moment kann das Programm zwei Arten von Datenbanken definieren, dies sind MySQL und MSSQL

4.1.2 USER () - der Name des Benutzers der Datenbank, für die die Verbindung zur Datenbank hergestellt wird

Es gibt 3 Optionen zum Bestimmen.

UNION - der akzeptabelste Weg, um zu bestimmen, ist der Server 1 Anfrage gesendet, um den gesamten Wert auf einmal zu bestimmen.

Nimm EIN SYMBOL - Charakter für Charakter, brutit mit einem Charakter.
Und das Intervall kann auf der Registerkarte Einstellungen angegeben werden.
BRUTE - symbolische Definition, brutit den ganzen Abfluss.

Beide Optionen sind für MySQL 3 vorgesehen oder können nicht mit Standardmethoden ermittelt werden. Nun, oder für Kamikaze.

4.1.3 DATABASE () - Der Name der Datenbank, an die das Skript zum Ausführen der Abfrage angehängt ist.
Die Funktionsweise ist ähnlich wie bei USER () S.4.1.2

4.1.4 VERSION () - die Version der Datenbank, an die das Skript zur Ausführung der Abfrage angehängt ist.
Die Funktionsweise ist ähnlich wie bei USER () S.4.1.2

4.1.5 Das Dropdown-Menü KONVERT kann helfen, Werte mit UNION zu bestimmen, wenn die Datenbank eine Codierung verwendet, und die Werte USER (), DATABASE (), VERSION () verwenden eine andere.

5.1 Brut-Namen von Tabellen und Feldfeldern.
(SQL Injections -> Identifizieren von DB -> MySQL / MSSQL)

Wird verwendet, um Namen wie oben erwähnt zu durchsuchen
Für eine erfolgreiche Suche müssen Sie die Anzahl der in Abschnitt 3.1.1 beschriebenen Felder auswählen

Hier stelle ich fest, dass die Suche Wörter aus externen Textwörterbüchern verwendet , so dass sie vor dem Beginn der Arbeit auf der Registerkarte EINSTELLUNGEN -> WÖRTERBUCH verbunden werden müssen .
Wörterbücher sind von 4 Arten
- Tischwörterbuch
- Feldwörterbuch
- Präfix Wörterbuch
- Wörterbuch der Suffixe (Suffix-Wörterbuch)

HINWEIS : Sie können sie auf derselben Registerkarte bearbeiten
.
Um die Präfix- und Suffix-Wörterbücher zu verwenden, müssen Sie die entsprechenden Kontrollkästchen auf der Registerkarte aktivieren (SQL Injections -> Identifizieren von DB -> MySQL / MSSQL)

"Verwenden Sie ein Präfix aus der Datei, wenn Bruteforce Tabellen und Felder"
"Verwenden Sie Suffix aus Datei, wenn Bruteforce Tabellen und Felder"

Um ein Präfix oder Suffix dauerhaft zu verwenden, können Sie diese in die Felder Präfix und Suffix eingeben. Dann werden sie nicht aus den Wörterbüchern genommen.

Dann klicken Sie auf "GET TABLE NAMES"

Wenn in diesem Fall alle Wörter aus dem Wörterbuch in dieser Liste erscheinen, sind die Programmeinstellungen nicht korrekt.

Nach einer erfolgreichen Suche sehen Sie die vorhandene Tabelle in der angegriffenen Datenbank, Sie müssen die Tabelle auswählen, die Sie benötigen, damit ihr Name im grauen Feld erscheint, und weiter die Tabelle durchsuchen, um die Feldnamen zu finden, indem Sie den Button "GET FIELD NAMES" drücken

HINWEIS : Sie können den Feldnamen Präfixe und Suffixe aus den Wörterbüchern hinzufügen, das Programm fragt Sie, wenn Sie den Button "GET FIELD NAMES" drücken.

6.1 Abrufen von Tabellen- und Feldnamen mithilfe der Tabelle INFORMATION_SCHEMA.
(SQL Injections -> Identifizieren von DB -> DUMP INF_SCH)
Aktuell für MySQL5 und MSSQL

Die Funktion funktioniert, wenn Sie mindestens ein Ausgabefeld haben und die Anzahl der Felder definiert ist.

Es gibt 2 Möglichkeiten.
- Nur Tabellennamen - Ermittelt nur Tabellennamen
- Tabellen- und Spaltennamen - erhalten Sie die Namen der Tabellen und Spalten in ihnen.

Es gibt auch ein Datenempfangslimit, die oberste Ebene ( FROM ) ist standardmäßig auf 16 festgelegt, da die ersten 15 Tabellen standardmäßig sind und nicht viele Informationen enthalten.

Die Schaltfläche "GO DUMP" startet den Datenerfassungsprozess.
Die empfangenen Daten können in einer Datei gespeichert werden, indem Sie auf die Schaltfläche "SAVE TO FILE" klicken

Es gibt ein Dropdown-Menü "Konvertieren" , die Essenz des Menüs und seine Bedienung ist identisch mit p.4.1.5

7.1 Symbol beliebiger Daten
(SQL-Injektionen -> OneChar BruteForce)
MySQL ist seit Version 4.1 und MSSQL aktuell.
Wird für eine Zeichendatenleiste aus einer Tabelle verwendet

Das Brute-Intervall wird von der Registerkarte EINSTELLUNGEN -> MAIN übernommen.

Sie können den Abfragetyp SELECT ID FROM news verwenden

Die Schaltfläche "Vorschau der SQL-Abfrage" zeigt eine vorläufige Anfrage an den Server

Die Schaltfläche "ERGEBNIS ERHALTEN" startet den Prozess des Brute.

8.1 Daten von der Datenbank beziehen. (SQL Injektionen -> Daten BruteForce)
Aktuell für MySQL 4 und MSSQL

Die Funktion funktioniert, wenn Sie mindestens ein Ausgabefeld haben und die Anzahl der Felder definiert ist.

Zu Beginn müssen Sie das Feld Tabelle mit dem Namen der gewünschten Tabelle füllen.
Als nächstes müssen Sie die Namen der erforderlichen Felder zur Liste hinzufügen, indem Sie diese Namen in das Feld unter der Liste eingeben und die Schaltfläche "ADD FIELD" drücken.

Feldnamen erhalten Sie über die Registerkarten 5.1 und 6.1.

HINWEIS: Sie können unnötige Felder aus der Liste löschen, indem Sie die Schaltfläche "REMOVE FIELD"

Als nächstes wird die Anfangs- und Endposition der Linie eingestellt. Um die Richtigkeit der Einstellungen zu überprüfen, können Sie die Taste "TEST" drücken. Wenn alles in Ordnung ist, sollten Sie den Wert der ausgewählten Felder durch einen Doppelpunkt ":" in der Liste der ersten Zeile in der Datenbank links neben der Schaltfläche "TEST" trennen

Wenn der Wert erscheint, können Sie mit dem Empfang der Daten beginnen, drücken Sie dazu den Button "GET IT" .

Die empfangenen Daten können in einer Datei gespeichert werden, indem Sie auf die Schaltfläche "SAVE TO FILE" klicken

9.1 Rückverbindung von MSSQL
Wird verwendet, um einen Backcontext aus einer Datenbank zu erstellen. Dabei wird die MSSQL- Master.xp_cmdshell- Datenbankprozedur verwendet. Um den Backcontext zu implementieren, müssen Sie die IP-Adresse in der Zeichenfolge überprüfen und den NetCat-Pfad auf der Registerkarte SETTINGS -> MAIN festlegen .

Bei erfolgreicher Operation verfügen Sie über eine Befehlskonsole, in der die Verbindung zum Server geöffnet wird.
10.1 Arbeiten mit Dateien

10.1.1 MySQL
Wird verwendet, um mit Dateien über SQL-Injection zu arbeiten

10.1.1.1 Lesen einer Datei

Die Funktion funktioniert, wenn Sie mindestens ein Ausgabefeld haben und die Anzahl der Felder definiert ist.

Sie müssen den absoluten Pfad zur Datei auf dem Server im unteren Rahmenfeld registrieren.

Beispiel: /home/user/public_hmtl/index.php

Und drücken Sie die "READ" -Taste. Bei erfolgreichem Lesen erscheint die Datei auf dem Bildschirm im Editor-Fenster, wo Sie diese Datei über den Menüpunkt "SAVE FILE" speichern können

10.1.1.2 Hochladen einer Datei auf den Server

Die Funktion funktioniert, wenn:
1) Sie haben mindestens ein Ausgabefeld,
2) Die Anzahl der Felder wird bestimmt.
3) IN DER SERVERKONFIGURATION SOLLTE NICHT GESPEICHERT WERDEN !!


Auch hier müssen Sie den absoluten Pfad zur erstellten Datei auf dem Server im oberen Rahmenfeld registrieren.

Es gibt 2 Optionen zum Hochladen einer Datei.
- UNION - verwendet INTO OUTFILE (Standardversion)
- ENCLOSED BY - verwendet in MySQL seit Version 3 (es ist ratsam zu verwenden, wenn Version 1 nicht funktioniert)

Der Text der Datei, die auf den Server hochgeladen werden soll, wird in das Textfeld von unten eingegeben.

10.1.2 MSSQL
Alles wird in Analogie zu Absatz 10.1.1 gemacht

11.1 Terminal
Wird verwendet, um beliebige Pakete an den Server zu senden und um die Antwort des Servers (den Header und den Hauptteil der Antwort) anzuzeigen. Es gibt eine Suchfunktion im Körper.

Die Anfrage wird in "HTTP REQUEST" geschrieben
Der Antwortheader wird geschrieben "ANTWORT: HTTP HEADER"
Der Hauptteil der Antwort wird geschrieben "ANTWORT: HTTP BODY"

Das Senden der Anfrage erfolgt durch Drücken der "SEND REQUEST" Taste

12.1 Geschichte
Hier werden alle Anfragen an den Server angezeigt und zusätzliche Informationen.
Sie können es speichern, indem Sie den Menüpunkt "HISTORY -> SAVE LOG" verwenden , oder löschen Sie es durch Drücken derselben "HISTORY -> CLEAR LOG"

13.1 Einstellungen
13.1.1 Allgemein
Übersetzung der Schnittstelle (Pfad zur Sprachdatei).
Pfad für NetCat (Pfad zu NetCat) - wird in Abschnitt 9.1 verwendet
Proxyeinstellungen
- Verwende Proxy
- IP-Adresse
- Hafen
Das Symbolintervall ( BruteForce-Symbolcode-Intervall ) wird in 4.1.2-4.1.5 und 7.1 verwendet

Menü 1. Schließen Sie die SQL-Anweisung (Close SQL) - verwendet, um die ursprüngliche Abfrage abzubrechen, so dass ein Fehler nicht angezeigt wird.
Für jede Datenbank werden verschiedene "Closures" verwendet
- MySQL = / *
- MSSQL = -

Menü 2. Zitate in ein Analog ändern (Zitate in ändern)
Wird zum Umgehen der Filterung mit Skripten verwendet.

Menü 3. Ändern Sie den Platz für das Analog (Ändern Sie den Raum in)
Wird zum Umgehen der Filterung mit Skripten verwendet

Andere Eigenschaften:

Hauptmenü.

Doppelwerkzeuge - das Programmfenster ist vergrößert, es ist möglich, die Programmregister willkürlich anzuordnen, zum Beispiel jedes Fenster mit einem Terminal oder einer Historie, Codierer und Decodierer

Standardeinstellungen - Alle Einstellungen des Programms werden zurückgesetzt.

STOP - stoppt das Programm.

Dienstprogramme

Enthält eine Vielzahl von Encodern und String-Decodern, wie HEX, BASE64, URL-LIKE, PHP CHR


Dein SQLHack.