Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
bbqsql — SQL-Injection-Ausnutzungstool | Kitploit
Tools/GitHubGitHub/ciscocxsecurity/bbqsql
SchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstests
GitHubciscocxsecurity/bbqsql

bbqsql

SQL-Injection-Ausnutzungstool

Repository anzeigen
826196vor 7 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

#BBQSQL# Ein Tool zur Ausnutzung von Blind-SQL-Injection

Inhaltsverzeichnis

  • Was ist BBQSQL?
  • Überblick über die Readme
  • Allgemeine Verwendung
  • Installation
  • BBQSQL-Optionen
  • Überblick über die Abfragesyntax
  • HTTP-Parameter
  • Konfiguration exportieren
  • Konfiguration importieren
  • Benutzerdefinierte Hooks
  • Einen Fehler gefunden?
  • Kann ich helfen?
  • Was hat es mit dem Namen auf sich?

Was ist BBQSQL?

Blind-SQL-Injection kann eine lästige Sache sein. Wenn die verfügbaren Tools funktionieren, funktionieren sie gut, aber wenn nicht, muss man etwas Eigenes schreiben. Das ist zeitaufwändig und mühsam. BBQSQL kann Ihnen helfen, diese Probleme zu lösen.

BBQSQL ist ein Blind-SQL-Injection-Framework, das in Python geschrieben ist. Es ist äußerst nützlich, wenn man knifflige SQL-Injection-Schwachstellen angreift. BBQSQL ist auch ein halbautomatisches Tool, das eine ziemlich umfangreiche Anpassung für schwer auslösbare SQL-Injection-Befunde ermöglicht. Das Tool ist datenbankunabhängig konzipiert und extrem vielseitig. Es verfügt außerdem über eine intuitive Benutzeroberfläche, die die Einrichtung von Angriffen wesentlich erleichtert. Python gevent wird ebenfalls implementiert, was BBQSQL extrem schnell macht.

Überblick über die Readme

Wir haben versucht, das Tool so zu schreiben, dass es bei der Einrichtung eines Angriffs in der Benutzeroberfläche sehr selbsterklärend ist. Der Vollständigkeit halber haben wir jedoch eine detaillierte Readme beigefügt, die Ihnen zusätzliche Einblicke in die Einzelheiten der einzelnen Konfigurationsoptionen geben soll. Beachtenswert ist, dass jede Konfigurationsoption in der Benutzeroberfläche eine zugehörige Beschreibung hat. Wenn Sie sich also entscheiden, das Tool ohne das Lesen dieser Seite zu starten, sollten Sie in der Lage sein, sich durch einen Angriff zu hacken.

Allgemeine Verwendung

Ähnlich wie bei anderen SQL-Injection-Tools stellen Sie bestimmte Anforderungsinformationen bereit.

Folgende übliche Informationen müssen bereitgestellt werden:

  • URL
  • HTTP-Methode
  • Header
  • Cookies
  • Kodierungsmethoden
  • Weiterleitungsverhalten
  • Dateien
  • HTTP-Authentifizierung
  • Proxys

Dann geben Sie an, wo die Injection erfolgt und welche Syntax wir injizieren. Lesen Sie weiter für Details.

Installation

Dies sollte unkompliziert sein, aber was auch immer. Versuchen Sie, Folgendes auszuführen:

root@kitploit:~
sudo pip install bbqsql

Wenn das nicht funktioniert, können Sie es aus dem Quellcode installieren. Das Tool benötigt gevent, requests.

BBQSQL-Optionen

Im Menü sehen Sie einen Platz für BBQSQL-Optionen. Hier geben Sie die folgenden Optionen an:

query

Dies wird unten im Abfragesyntax-Überblick ausführlicher beschrieben.

csv_output_file

Der Name einer Datei, in die die Ergebnisse ausgegeben werden sollen. Lassen Sie dies leer, wenn Sie keine Ausgabe in eine Datei wünschen.

technique

BBQSQL verwendet zwei Techniken bei der Durchführung eines Blind-SQL-Injection-Angriffs. Die erste und standardmäßig verwendete Technik ist binary_search. Siehe Wikipedia für weitere Informationen.

Die zweite Technik, die Sie verwenden können, ist frequency_search. Die Häufigkeitssuche basiert auf einer Analyse der englischen Sprache, um die Häufigkeit zu bestimmen, mit der ein Buchstabe vorkommt. Diese Suchmethode ist bei nicht-entropischen Daten sehr schnell, kann aber bei nicht-englischen oder verschleierten Daten langsam sein.

Sie können entweder binary_search oder frequency_search als Wert für diesen Parameter angeben.

comparison_attr

Dies gibt die Art der SQL-Injection an, die Sie entdeckt haben. Hier können Sie festlegen, welches Attribut der HTTP-Antwort BBQSQL untersuchen soll, um wahr/falsch zu bestimmen.

Sie können angeben: status_code, url, time, size, text, content, encoding, cookies, headers oder history

Wenn Sie eine SQL-Injection identifiziert haben, die zu einem anderen Server-Statuscode führt, setzen Sie hier 'status_code'. Wenn das Cookie anders ist, setzen Sie 'cookie'. Wenn die Antwortgröße unterschiedlich ist, setzen Sie 'size'. Sie verstehen das Prinzip.

concurrency

Die Nebenläufigkeit basiert auf der gevent-Bibliothek in Python. Funktional erscheint sie wie Threading, aber die Einzelheiten ihrer Funktionsweise können in unserem DefCon-Vortrag hier [Link einfügen] eingesehen werden. Diese Einstellung steuert den Grad der Nebenläufigkeit, mit dem der Angriff ausgeführt wird. Dies ist nützlich, um die Anzahl der Anfragen zu drosseln und die Angriffszeiten zu beschleunigen. Bei wirklich leistungsstarken Webservern wie nginx konnten wir die Nebenläufigkeit auf 75 einstellen. Standardmäßig ist dies auf '30' gesetzt.

Überblick über die Abfragesyntax

Wenn Sie auf eine SQL-Injection-Schwachstelle mit seltsamen Eigenheiten stoßen (z. B. bestimmte Zeichen können nicht enthalten sein oder Funktionen wie ASCII/CHAR funktionieren nicht), haben Sie sich wahrscheinlich dabei ertappt, ein Skript mit Ihrer benutzerdefinierten Injektionssyntax zu schreiben. BBQSQL nimmt den Skriptteil ab und bietet eine Möglichkeit, Ihre benutzerdefinierte Abfragesyntax einzufügen und mit Leichtigkeit auszunutzen.

Der Abfrageeingabebereich ist der Ort, an dem Sie Ihre Abfrage konstruieren, die zum Extrahieren von Informationen aus der Datenbank verwendet wird. Es wird davon ausgegangen, dass Sie bereits eine SQL-Injection an einem anfälligen Parameter identifiziert und eine erfolgreiche Abfrage getestet haben.

Unten finden Sie ein Beispiel für eine Abfrage, die Sie verwenden können, um Ihre Abfrage zu erstellen.

In diesem Beispiel möchte der Angreifer die Datenbankversion auswählen:

root@kitploit:~
vulnerable_parameter'; if(ASCII(SUBSTRING((SELECT @@version LIMIT 1 OFFSET ${row_index}) , ${char_index} ,1))) ${comparator:>}ASCII(${char_val}) WAITFOR DELAY '0\:0\:0${sleep}'; --

Die Abfragesyntax basiert auf Platzhaltern, die BBQSQL mitteilen, wie der Angriff ausgeführt werden soll.

Sie müssen die folgenden Platzhalterinformationen bereitstellen, damit der Angriff funktioniert. Sobald Sie diese in Ihre Abfrage eingefügt haben, erledigt BBQSQL den Rest:

${row_index}: Dies teilt BBQSQL mit, hier Zeilen zu iterieren. Da wir LIMIT verwenden, können wir je nach ${row_index}-Wert n Zeilen anzeigen.

${char_index}: Dies teilt BBQSQL mit, welches Zeichen aus der Unterabfrage abgefragt werden soll.

${char_val}: Dies teilt BBQSQL mit, wo die Ergebnisse aus der Unterabfrage verglichen werden sollen, um das Ergebnis zu validieren.

${comparator}: Hiermit teilen Sie BBQSQL mit, wie die Antworten verglichen werden sollen, um festzustellen, ob das Ergebnis wahr oder falsch ist. Standardmäßig wird das Symbol > verwendet.

${sleep}: Dies ist optional, teilt BBQSQL aber mit, wo die Anzahl der Sekunden eingefügt werden soll, die bei zeitbasierter SQL-Injection gewartet werden soll.

Nicht alle dieser Platzhalter sind erforderlich. Wenn Sie beispielsweise eine halbblinde boolesche SQL-Injection entdeckt haben, können Sie den Parameter ${sleep} weglassen.

HTTP-Parameter

BBQSQL hat viele HTTP-Parameter, die Sie konfigurieren können, wenn Sie Ihren Angriff einrichten. Mindestens müssen Sie die URL, den Ort, an dem die Injektionsabfrage ausgeführt werden soll, und die Methode angeben. Die folgenden Optionen können gesetzt werden:

  • files
  • headers
  • cookies
  • url
  • allow_redirects
  • proxies
  • data
  • method
  • auth

Sie geben an, wo die Injektionsabfrage eingefügt werden soll, indem Sie die Vorlage ${injection} verwenden. Ohne die Injektionsvorlage weiß das Tool nicht, wo die Abfrage eingefügt werden soll.

files

Geben Sie Dateien an, die mit der Anfrage gesendet werden sollen. Setzen Sie den Wert auf den Pfad und BBQSQL kümmert sich um das Öffnen/Einbinden der Datei.

headers

HTTP-Header, die mit den Anfragen gesendet werden sollen. Dies kann ein String oder ein Dictionary sein. Zum Beispiel:

{"User-Agent":"bbqsql"} oder "User-Agent: bbqsql"

cookies

Ein Dictionary oder ein String von Cookies, die mit der Anfrage gesendet werden sollen. Zum Beispiel:

{"PHPSESSIONID":"123123"} oder PHPSESSIONID=123123;JSESSIONID=foobar

url

Geben Sie eine URL an, an die die Anfragen gesendet werden sollen.

allow_redirects

Dies ist ein Boolean, der bestimmt, ob HTTP-Weiterleitungen beim Senden von Anfragen gefolgt werden.

proxies

Geben Sie einen HTTP-Proxy an, der für die Anfrage als Dictionary verwendet werden soll. Zum Beispiel:

{"http": "10.10.1.10:3128","https": "10.10.1.10:1080"}

data

Geben Sie POST-Daten an, die zusammen mit der Anfrage gesendet werden sollen. Dies kann ein String oder ein Dictionary sein. Zum Beispiel:

{"input_field":"value"} oder input_field=value

method

Geben Sie die Methode für die HTTP-Anfrage an. Gültige Methoden sind

'get','options','head','post','put','patch','delete'

auth

Geben Sie ein Tupel aus Benutzername und Passwort an, das für die HTTP-Basisauthentifizierung verwendet werden soll. Zum Beispiel:

("myusername","mypassword")

Konfiguration exportieren

Nachdem Sie Ihren Angriff in der Benutzeroberfläche eingerichtet haben, können Sie die Konfigurationsdatei exportieren. Die Option wird angezeigt, wenn Sie das Tool ausführen. Die exportierte Konfigurationsdatei verwendet ConfigParser und ist leicht lesbar. Eine Beispielkonfigurationsdatei ist unten zu sehen:

`[Request Config] url = http://example.com/sqlivuln/index.php?username=user1&password=secret${injection} method = GET

[HTTP Config] query = ' and ASCII(SUBSTR((SELECT data FROM data LIMIT 1 OFFSET ${row_index:1}),${char_index:1},1))${comparator:>}${char_val:0} # technique = binary_search comparison_attr = size concurrency = 30`

Dies ist nützlich, wenn Sie einen Angriff fortsetzen oder vielleicht nur die Abfrage anpassen möchten, ohne den Aufwand der Neukonfiguration aller Optionen.

Konfiguration importieren

Sie können auch eine Konfiguration von der Befehlszeile oder aus der Benutzeroberfläche importieren. Um eine Konfiguration von der Befehlszeile zu importieren, führen Sie bbqsql einfach mit den folgenden Optionen aus:

bbqsql -c config_file

Wenn Sie eine Konfigurationsdatei laden, werden dieselben Validierungsroutinen auf die Parameter angewendet, um sicherzustellen, dass sie gültig sind.

Benutzerdefinierte Hooks

Manchmal müssen Sie etwas wirklich Verrücktes tun. Vielleicht müssen Sie die Werte, die in ein Feld eingegeben werden, verschlüsseln, bevor Sie die Anfrage senden, oder vielleicht müssen Sie eine dreifache URL-Kodierung durchführen. Unabhängig davon machen solche Situationen andere Tools unbrauchbar. BBQSQL ermöglicht es Ihnen, "Hook"-Funktionen zu definieren, die das Tool an verschiedenen Stellen während der Anfrage aufruft. Sie können beispielsweise eine pre_request-Funktion angeben, die die Anfrage als Argument nimmt, die erforderlichen Mutationen durchführt und die modifizierte Anfrage zur weiteren Verarbeitung an den Server zurückgibt.

Um dies umzusetzen, erstellen Sie eine Python-Datei und definieren Sie Hook-Funktionen. Die verfügbaren Funktionsnamen sind unten aufgeführt. In Ihrer Hooks-Datei können Sie so viele oder so wenige dieser Hook-Funktionen definieren, wie Sie möchten. Anschließend können Sie im Abschnitt bbqsql_options des Menüs den Speicherort Ihrer hooks_file angeben. BBQSQL wird diese Datei einlesen und die von Ihnen definierten Hooks verwenden.

Es ist wichtig, dass die von Ihnen angegebenen Hook-Funktionen exakt die unten angegebenen Namen haben, da BBQSQL sonst nicht weiß, welcher Hook wann aufgerufen werden soll. Die args-Funktion erhält einen Parameter, der alle Argumente enthält, die zum Erstellen der HTTP-Anfrage verwendet werden. Die pre_request-Funktion erhält das Request-Objekt, bevor es gesendet wird. Die post_request-Funktion erhält das Request-Objekt, nachdem es gesendet wurde. Die response-Funktion erhält das Antwortobjekt, bevor es an BBQSQL zurückgegeben wird.

Die folgenden Hooks sind verfügbar:

args: Ein Dictionary der Argumente, die an Request() gesendet werden.

pre_request: Das Request-Objekt, unmittelbar bevor es gesendet wird.

post_request: Das Request-Objekt, unmittelbar nachdem es gesendet wurde.

response: Die Antwort, die von einer Request generiert wurde.

Weitere Informationen zur Funktionsweise dieser Hooks und zum Aussehen Ihres hooks-Dictionaries finden Sie in der Dokumentation der Requests-Bibliothek zu Hooks

Eine Beispiel-Hooks-Datei könnte wie folgt aussehen:

root@kitploit:~
# datei: hooks.py
import time

def pre_request(req):
    """
    Dieser Hook ersetzt einen Platzhalter durch die aktuelle Zeit.
    Erwartet, dass die URL wie folgt aussieht:
        http://www.google.com?k=v&time=PLATZHALTER
    """
    req.url = req.url.replace('PLATZHALTER',str(time.time()))
    return req

Einen Fehler gefunden?

Reichen Sie Fehlerkorrekturen oder Feature-Anfragen unter https://github.com/Neohapsis/bbqsql/ ein.

Kann ich helfen?

Bitte! Wir sehen dies als großartigen Ausgangspunkt, um ein voll funktionsfähiges SQL-Injection-Framework zu entwickeln. Zögern Sie nicht, den Code zu forken, und wir können Ihre Änderungen zusammenführen, wenn sie nützlich sind.

Was hat es mit dem Namen auf sich?

BBQ ist absolut köstlich und SQL-Injection ebenfalls!

Tool herunterladen