mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/pentesting-web/sql-injection/sqlmap.md', 'src/pentestin
This commit is contained in:
parent
08b1dd2fc1
commit
33830ed1e9
@ -21,6 +21,23 @@
|
||||
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
|
||||
--proxy=PROXY
|
||||
```
|
||||
### Technik-Flags (`--technique`)
|
||||
|
||||
Das Argument `--technique` definiert, welche SQL-Injection-Methoden sqlmap versuchen wird. Jeder Buchstabe im String repräsentiert eine Technik:
|
||||
|
||||
| Buchstabe | Technik | Beschreibung |
|
||||
| --------- | ------- | ------------ |
|
||||
| B | Boolean-basiert blind | Verwendet wahr/falsch Bedingungen, um Daten zu erschließen |
|
||||
| E | Fehler-basiert | Nutzt ausführliche DBMS-Fehlermeldungen, um Ergebnisse zu exfiltrieren |
|
||||
| U | UNION-Abfrage | Injiziert `UNION SELECT`-Anweisungen, um Daten über denselben Kanal abzurufen |
|
||||
| S | Gestapelte Abfragen | Fügt zusätzliche Anweisungen hinzu, die durch `;` getrennt sind |
|
||||
| T | Zeit-basiert blind | Vertraut auf Verzögerungen (`SLEEP`, `WAITFOR`), um die Injection zu erkennen |
|
||||
| Q | Inline / out-of-band | Verwendet Funktionen wie `LOAD_FILE()` oder OOB-Kanäle wie DNS |
|
||||
|
||||
Die Standardreihenfolge ist `BEUSTQ`. Sie können sie umsortieren oder einschränken, z.B. nur Boolean und Zeit-basiert in dieser Reihenfolge:
|
||||
```bash
|
||||
sqlmap -u "http://target/?id=1" --technique="BT" --batch
|
||||
```
|
||||
### Informationen abrufen
|
||||
|
||||
#### Intern
|
||||
@ -128,8 +145,8 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| 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 \(nicht bereits kodierte Zeichen verarbeiten\) |
|
||||
| charunicodeencode.py | Unicode-URL-kodiert nicht kodierte Zeichen in einer gegebenen Payload \(nicht bereits kodierte Zeichen verarbeiten\). "%u0022" |
|
||||
| charunicodeescape.py | Unicode-URL-kodiert nicht kodierte Zeichen in einer gegebenen Payload \(nicht bereits kodierte Zeichen verarbeiten\). "\u0022" |
|
||||
| charunicodeencode.py | Unicode-url-kodiert nicht kodierte Zeichen in einer gegebenen Payload \(nicht bereits kodierte Zeichen verarbeiten\). "%u0022" |
|
||||
| charunicodeescape.py | Unicode-url-kodiert nicht kodierte Zeichen in einer gegebenen Payload \(nicht bereits kodierte Zeichen verarbeiten\). "\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 |
|
||||
@ -141,7 +158,7 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| 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 \(nicht bereits kodierte Zeichen verarbeiten\) |
|
||||
| randomcase.py | Ersetzt jedes Schlüsselwortzeichen durch einen zufälligen Groß- oder Kleinbuchstaben |
|
||||
| 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 |
|
||||
@ -153,15 +170,18 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
| 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 Plus \('+'\) |
|
||||
| space2plus.py | Ersetzt das Leerzeichen \(' '\) durch Plus \('+'\) |
|
||||
| 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-funktionale Schlüsselwort mit einem versionierten MySQL-Kommentar |
|
||||
| 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 |
|
||||
| xforwardedfor.py | Fügt einen gefälschten HTTP-Header 'X-Forwarded-For' hinzu |
|
||||
|
||||
## Referenzen
|
||||
- [SQLMap: Testing SQL Database Vulnerabilities](https://blog.bughunt.com.br/sqlmap-vulnerabilidades-banco-de-dados/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
@ -23,6 +23,23 @@
|
||||
--proxy=http://127.0.0.1:8080
|
||||
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char
|
||||
```
|
||||
### Technik-Flags (`--technique`)
|
||||
|
||||
Die `--technique`-Option ermöglicht es Ihnen, die SQL-Injection-Techniken, die sqlmap testen wird, einzuschränken oder neu anzuordnen. Jeder Buchstabe entspricht einer anderen Klasse von Payloads:
|
||||
|
||||
| Buchstabe | Technik | Beschreibung |
|
||||
| --------- | ------- | ------------ |
|
||||
| B | Boolean-basiert blind | Verwendet Wahr/Falsch-Bedingungen in der Seitenantwort, um Ergebnisse abzuleiten |
|
||||
| E | Fehlerbasiert | Nutzt ausführliche DBMS-Fehlermeldungen, um Daten zu extrahieren |
|
||||
| U | UNION-Abfrage | Injiziert `UNION SELECT`-Anweisungen, um Daten über denselben Kanal abzurufen |
|
||||
| S | Gestapelte Abfragen | Fügt zusätzliche Anweisungen hinzu, die durch einen SQL-Trennzeichen (`;`) getrennt sind |
|
||||
| T | Zeitbasiert blind | Vertraut auf `SLEEP/WAITFOR`-Verzögerungen, um injizierbare Bedingungen zu erkennen |
|
||||
| Q | Inline / out-of-band | Nutzt Funktionen wie `LOAD_FILE()` oder DNS-Exfiltration, um Daten zu extrahieren |
|
||||
|
||||
Die Standardreihenfolge, die sqlmap folgen wird, ist `BEUSTQ` (alle Techniken). Sie können sowohl die Reihenfolge als auch die Teilmenge ändern. Zum Beispiel wird der folgende Befehl **nur** versuchen, UNION-Abfrage- und zeitbasierte blind Techniken anzuwenden, wobei UNION zuerst versucht wird:
|
||||
```bash
|
||||
sqlmap -u "http://target.tld/page.php?id=1" --technique="UT" --batch
|
||||
```
|
||||
### Informationen abrufen
|
||||
|
||||
#### Intern
|
||||
@ -43,7 +60,7 @@
|
||||
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
|
||||
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
|
||||
```
|
||||
Mit [SQLMapping](https://taurusomar.github.io/sqlmapping/) ist es ein praktisches Tool, das Befehle generiert und einen vollständigen Überblick, sowohl grundlegende als auch fortgeschrittene, für SQLMap bietet. Es enthält ToolTips, die jeden Aspekt des Tools erklären und jede Option im Detail beschreiben, damit Sie lernen, wie Sie es effizient und effektiv nutzen können.
|
||||
Mit [SQLMapping](https://taurusomar.github.io/sqlmapping/) ist es ein praktisches Tool, das Befehle generiert und einen vollständigen Überblick, sowohl grundlegend als auch fortgeschritten, für SQLMap bietet. Es enthält ToolTips, die jeden Aspekt des Tools erklären und jede Option im Detail beschreiben, damit Sie lernen, wie Sie es effizient und effektiv nutzen können.
|
||||
|
||||
## Injection-Stelle
|
||||
|
||||
@ -137,59 +154,62 @@ 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 Injection hier](second-order-injection-sqlmap.md).
|
||||
Denke daran, dass **du dein eigenes Tamper in Python erstellen kannst** und es sehr einfach ist. Du kannst ein Tamper-Beispiel auf der [Seite zur Zweiten Ordnung Injection hier](second-order-injection-sqlmap.md) finden.
|
||||
```bash
|
||||
--tamper=name_of_the_tamper
|
||||
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
|
||||
```
|
||||
| Tamper | Beschreibung |
|
||||
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| 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 | Kodiert alle Zeichen in einer gegebenen Payload in Base64 |
|
||||
| between.py | Ersetzt den Größer-als-Operator ('>') durch 'NOT BETWEEN 0 AND #' |
|
||||
| apostrophemask.py | Ersetzt das Apostroph-Zeichen durch sein UTF-8-Vollbreiten-Gegenstück |
|
||||
| apostrophenullencode.py | Ersetzt das Apostroph-Zeichen 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 (nicht bereits kodierte werden nicht verarbeitet) |
|
||||
| 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 (nicht bereits kodierte werden nicht verarbeitet) |
|
||||
| charunicodeencode.py | Unicode-URL-kodiert nicht kodierte Zeichen in einer gegebenen Payload (nicht bereits kodierte werden nicht verarbeitet). "%u0022" |
|
||||
| charunicodeescape.py | Unicode-URL-kodiert nicht kodierte Zeichen in einer gegebenen Payload (nicht bereits kodierte werden nicht verarbeitet). "\u0022" |
|
||||
| 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 |
|
||||
| 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 |
|
||||
| ifnull2ifisnull.py | Ersetzt Instanzen wie 'IFNULL(A, B)' durch 'IF(ISNULL(A), B, A)' |
|
||||
| modsecurityversioned.py | Umhüllt die gesamte Abfrage mit einem versionierten Kommentar |
|
||||
| modsecurityzeroversioned.py | Umhüllt 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 (nicht bereits kodierte werden nicht verarbeitet) |
|
||||
| randomcase.py | Ersetzt jedes Schlüsselwortzeichen durch einen zufälligen Groß- oder Kleinbuchstaben |
|
||||
| percentage.py | Fügt ein Prozentzeichen ('%') vor jedes 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 |
|
||||
| space2comment.py | Ersetzt das Leerzeichen-Zeichen (' ') durch Kommentare |
|
||||
| space2dash.py | Ersetzt das Leerzeichen-Zeichen (' ') durch einen Strichkommentar ('--'), gefolgt von einer zufälligen Zeichenfolge und einer neuen Zeile ('\n') |
|
||||
| space2hash.py | Ersetzt das Leerzeichen-Zeichen (' ') durch ein Pfund-Zeichen ('#'), gefolgt von einer zufälligen Zeichenfolge und einer neuen Zeile ('\n') |
|
||||
| space2morehash.py | Ersetzt das Leerzeichen-Zeichen (' ') durch ein Pfund-Zeichen ('#'), gefolgt von einer zufälligen Zeichenfolge und einer neuen Zeile ('\n') |
|
||||
| space2mssqlblank.py | Ersetzt das Leerzeichen-Zeichen (' ') durch ein zufälliges Leerzeichen aus einer gültigen Menge alternativer Zeichen |
|
||||
| space2mssqlhash.py | Ersetzt das Leerzeichen-Zeichen (' ') durch ein Pfund-Zeichen ('#'), gefolgt von einer neuen Zeile ('\n') |
|
||||
| space2mysqlblank.py | Ersetzt das Leerzeichen-Zeichen (' ') durch ein zufälliges Leerzeichen aus einer gültigen Menge alternativer Zeichen |
|
||||
| space2mysqldash.py | Ersetzt das Leerzeichen-Zeichen (' ') durch einen Strichkommentar ('--'), gefolgt von einer neuen Zeile ('\n') |
|
||||
| space2plus.py | Ersetzt das Leerzeichen-Zeichen (' ') durch ein Pluszeichen ('+') |
|
||||
| space2randomblank.py | Ersetzt das Leerzeichen-Zeichen (' ') 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' |
|
||||
| unmagicquotes.py | Ersetzt das Anführungszeichen-Zeichen (') 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 |
|
||||
| versionedkeywords.py | Umhüllt jedes Nicht-Funktions-Schlüsselwort mit einem versionierten MySQL-Kommentar |
|
||||
| versionedmorekeywords.py | Umhüllt jedes Schlüsselwort mit einem versionierten MySQL-Kommentar |
|
||||
| xforwardedfor.py | Fügt einen gefälschten HTTP-Header 'X-Forwarded-For' hinzu |
|
||||
|
||||
|
||||
## Referenzen
|
||||
- [SQLMap: Testing SQL Database Vulnerabilities](https://blog.bughunt.com.br/sqlmap-vulnerabilidades-banco-de-dados/)
|
||||
|
||||
{{#include ../../../banners/hacktricks-training.md}}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user