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
9462185234
commit
7053712a00
@ -21,6 +21,23 @@
|
||||
--auth-cred="<AUTH>" #HTTP authentication credentials (name:password)
|
||||
--proxy=PROXY
|
||||
```
|
||||
### Flagi technik (`--technique`)
|
||||
|
||||
Argument `--technique` definiuje, które metody SQL injection sqlmap będzie próbować. Każda litera w ciągu reprezentuje technikę:
|
||||
|
||||
| Litera | Technika | Opis |
|
||||
| ------ | --------- | ----------- |
|
||||
| B | Boolean-based blind | Używa warunków prawda/fałsz do wnioskowania danych |
|
||||
| E | Error-based | Wykorzystuje szczegółowe komunikaty o błędach DBMS do eksfiltracji wyników |
|
||||
| U | UNION query | Wstrzykuje instrukcje `UNION SELECT`, aby pobrać dane przez ten sam kanał |
|
||||
| S | Stacked queries | Dodaje dodatkowe instrukcje oddzielone `;` |
|
||||
| T | Time-based blind | Opiera się na opóźnieniach (`SLEEP`, `WAITFOR`), aby wykryć wstrzyknięcie |
|
||||
| Q | Inline / out-of-band | Używa funkcji takich jak `LOAD_FILE()` lub kanałów OOB, takich jak DNS |
|
||||
|
||||
Domyślna kolejność to `BEUSTQ`. Możesz je przestawić lub ograniczyć, np. tylko Boolean i Time-based w tej kolejności:
|
||||
```bash
|
||||
sqlmap -u "http://target/?id=1" --technique="BT" --batch
|
||||
```
|
||||
### Pobierz informacje
|
||||
|
||||
#### Wewnętrzne
|
||||
@ -31,7 +48,7 @@
|
||||
--users #Get usernames od DB
|
||||
--passwords #Get passwords of users in DB
|
||||
```
|
||||
#### DB data
|
||||
#### Dane DB
|
||||
```bash
|
||||
--all #Retrieve everything
|
||||
--dump #Dump DBMS database table entries
|
||||
@ -117,51 +134,54 @@ sqlmap -r r.txt -p id --not-string ridiculous --batch
|
||||
```
|
||||
| Tamper | Opis |
|
||||
| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| apostrophemask.py | Zastępuje znak apostrofu jego pełnowymiarowym odpowiednikiem UTF-8 |
|
||||
| apostrophemask.py | Zastępuje znak apostrofu jego pełnowymiarowym odpowiednikiem UTF-8 |
|
||||
| apostrophenullencode.py | Zastępuje znak apostrofu jego nielegalnym podwójnym odpowiednikiem unicode |
|
||||
| appendnullbyte.py | Dodaje zakodowany znak NULL na końcu ładunku |
|
||||
| base64encode.py | Koduje wszystkie znaki w danym ładunku w formacie Base64 |
|
||||
| between.py | Zastępuje operator większy niż \('>'\) z 'NOT BETWEEN 0 AND \#' |
|
||||
| bluecoat.py | Zastępuje znak spacji po instrukcji SQL ważnym losowym znakiem pustym. Następnie zastępuje znak = operatorem LIKE |
|
||||
| bluecoat.py | Zastępuje znak spacji po instrukcji SQL ważnym losowym znakiem pustym. Następnie zastępuje znak = operatorem LIKE |
|
||||
| chardoubleencode.py | Podwójnie koduje URL wszystkie znaki w danym ładunku \(nie przetwarzając już zakodowanych\) |
|
||||
| commalesslimit.py | Zastępuje wystąpienia takie jak 'LIMIT M, N' z 'LIMIT N OFFSET M' |
|
||||
| commalessmid.py | Zastępuje wystąpienia takie jak 'MID\(A, B, C\)' z 'MID\(A FROM B FOR C\)' |
|
||||
| concat2concatws.py | Zastępuje wystąpienia takie jak 'CONCAT\(A, B\)' z 'CONCAT_WS\(MID\(CHAR\(0\), 0, 0\), A, B\)' |
|
||||
| charencode.py | Koduje URL wszystkie znaki w danym ładunku \(nie przetwarzając już zakodowanych\) |
|
||||
| charunicodeencode.py | Koduje znaki niezakodowane w danym ładunku w formacie unicode-url \(nie przetwarzając już zakodowanych\). "%u0022" |
|
||||
| charunicodeescape.py | Koduje znaki niezakodowane w danym ładunku w formacie unicode-url \(nie przetwarzając już zakodowanych\). "\u0022" |
|
||||
| charunicodeencode.py | Koduje znaki unicode w danym ładunku \(nie przetwarzając już zakodowanych\). "%u0022" |
|
||||
| charunicodeescape.py | Koduje znaki unicode w danym ładunku \(nie przetwarzając już zakodowanych\). "\u0022" |
|
||||
| equaltolike.py | Zastępuje wszystkie wystąpienia operatora równości \('='\) operatorem 'LIKE' |
|
||||
| escapequotes.py | Używa znaku ukośnika do ucieczki cytatów \(' i "\) |
|
||||
| greatest.py | Zastępuje operator większy niż \('>'\) jego odpowiednikiem 'GREATEST' |
|
||||
| escapequotes.py | Używa znaku ukośnika do ucieczki z cytatów \(' i "\) |
|
||||
| greatest.py | Zastępuje operator większy niż \('>'\) z odpowiednikiem 'GREATEST' |
|
||||
| halfversionedmorekeywords.py | Dodaje wersjonowany komentarz MySQL przed każdym słowem kluczowym |
|
||||
| ifnull2ifisnull.py | Zastępuje wystąpienia takie jak 'IFNULL\(A, B\)' z 'IF\(ISNULL\(A\), B, A\)' |
|
||||
| modsecurityversioned.py | Otacza pełne zapytanie wersjonowanym komentarzem |
|
||||
| modsecurityversioned.py | Otacza pełne zapytanie wersjonowanym komentarzem |
|
||||
| modsecurityzeroversioned.py | Otacza pełne zapytanie zerowym wersjonowanym komentarzem |
|
||||
| multiplespaces.py | Dodaje wiele spacji wokół słów kluczowych SQL |
|
||||
| nonrecursivereplacement.py | Zastępuje zdefiniowane słowa kluczowe SQL reprezentacjami odpowiednimi do zastąpienia \(np. .replace\("SELECT", ""\)\) filtry |
|
||||
| percentage.py | Dodaje znak procentu \('%'\) przed każdym znakiem |
|
||||
| overlongutf8.py | Konwertuje wszystkie znaki w danym ładunku \(nie przetwarzając już zakodowanych\) |
|
||||
| overlongutf8.py | Konwertuje wszystkie znaki w danym ładunku \(nie przetwarzając już zakodowanych\) |
|
||||
| randomcase.py | Zastępuje każdy znak słowa kluczowego losową wartością wielkości liter |
|
||||
| randomcomments.py | Dodaje losowe komentarze do słów kluczowych SQL |
|
||||
| securesphere.py | Dodaje specjalnie skonstruowany ciąg |
|
||||
| sp_password.py | Dodaje 'sp_password' na końcu ładunku w celu automatycznego zatarcia w logach DBMS |
|
||||
| space2comment.py | Zastępuje znak spacji \(' '\) komentarzami |
|
||||
| space2dash.py | Zastępuje znak spacji \(' '\) komentarzem w postaci myślnika \('--'\) po którym następuje losowy ciąg i nowa linia \('\n'\) |
|
||||
| sp_password.py | Dodaje 'sp_password' na końcu ładunku w celu automatycznego zatarcia w logach DBMS |
|
||||
| space2comment.py | Zastępuje znak spacji \(' '\) komentarzami |
|
||||
| space2dash.py | Zastępuje znak spacji \(' '\) komentarzem w postaci myślnika \('--'\) po którym następuje losowy ciąg i nowa linia \('\n'\) |
|
||||
| space2hash.py | Zastępuje znak spacji \(' '\) znakiem krzyżyka \('\#'\) po którym następuje losowy ciąg i nowa linia \('\n'\) |
|
||||
| space2morehash.py | Zastępuje znak spacji \(' '\) znakiem krzyżyka \('\#'\) po którym następuje losowy ciąg i nowa linia \('\n'\) |
|
||||
| space2mssqlblank.py | Zastępuje znak spacji \(' '\) losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| space2mssqlblank.py | Zastępuje znak spacji \(' '\) losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| space2mssqlhash.py | Zastępuje znak spacji \(' '\) znakiem krzyżyka \('\#'\) po którym następuje nowa linia \('\n'\) |
|
||||
| space2mysqlblank.py | Zastępuje znak spacji \(' '\) losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| space2mysqlblank.py | Zastępuje znak spacji \(' '\) losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| space2mysqldash.py | Zastępuje znak spacji \(' '\) komentarzem w postaci myślnika \('--'\) po którym następuje nowa linia \('\n'\) |
|
||||
| space2plus.py | Zastępuje znak spacji \(' '\) znakiem plus \('+'\) |
|
||||
| space2randomblank.py | Zastępuje znak spacji \(' '\) losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| symboliclogical.py | Zastępuje operatory logiczne AND i OR ich symbolicznymi odpowiednikami \(&& i |
|
||||
| space2randomblank.py | Zastępuje znak spacji \(' '\) losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| symboliclogical.py | Zastępuje operatory logiczne AND i OR ich symbolicznymi odpowiednikami \(&& i |
|
||||
| unionalltounion.py | Zastępuje UNION ALL SELECT z UNION SELECT |
|
||||
| unmagicquotes.py | Zastępuje znak cytatu \('\) kombinacją wielobajtową %bf%27 razem z ogólnym komentarzem na końcu \(aby to działało\) |
|
||||
| unmagicquotes.py | Zastępuje znak cytatu \('\) kombinacją wielobajtową %bf%27 razem z ogólnym komentarzem na końcu \(aby to działało\) |
|
||||
| uppercase.py | Zastępuje każdy znak słowa kluczowego wartością wielką 'INSERT' |
|
||||
| varnish.py | Dodaje nagłówek HTTP 'X-originating-IP' |
|
||||
| varnish.py | Dodaje nagłówek HTTP 'X-originating-IP' |
|
||||
| versionedkeywords.py | Otacza każde nie-funkcyjne słowo kluczowe wersjonowanym komentarzem MySQL |
|
||||
| versionedmorekeywords.py | Otacza każde słowo kluczowe wersjonowanym komentarzem MySQL |
|
||||
| xforwardedfor.py | Dodaje fałszywy nagłówek HTTP 'X-Forwarded-For' |
|
||||
| xforwardedfor.py | Dodaje fałszywy nagłówek HTTP 'X-Forwarded-For' |
|
||||
|
||||
## References
|
||||
- [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
|
||||
```
|
||||
### Flagi technik (`--technique`)
|
||||
|
||||
Opcja `--technique` pozwala na ograniczenie lub zmianę kolejności technik SQL injection, które sqlmap będzie testować. Każda litera odpowiada innej klasie ładunków:
|
||||
|
||||
| Litera | Technika | Opis |
|
||||
| ------ | --------- | ----------- |
|
||||
| B | Boolean-based blind | Używa warunków prawda/fałsz w odpowiedzi strony, aby wywnioskować wyniki |
|
||||
| E | Error-based | Wykorzystuje szczegółowe komunikaty o błędach DBMS do wydobywania danych |
|
||||
| U | UNION query | Wstrzykuje instrukcje `UNION SELECT`, aby pobrać dane przez ten sam kanał |
|
||||
| S | Stacked queries | Dodaje dodatkowe instrukcje oddzielone przez ogranicznik SQL (`;`) |
|
||||
| T | Time-based blind | Opiera się na opóźnieniach `SLEEP/WAITFOR`, aby wykryć warunki podatne na wstrzyknięcie |
|
||||
| Q | Inline / out-of-band | Wykorzystuje funkcje takie jak `LOAD_FILE()` lub eksfiltrację DNS do wydobywania danych |
|
||||
|
||||
Domyślna kolejność, którą sqlmap będzie stosować, to `BEUSTQ` (wszystkie techniki). Możesz zmienić zarówno kolejność, jak i podzbiór. Na przykład, następujące polecenie **tylko** spróbuje technik UNION query i Time-based blind, próbując najpierw UNION:
|
||||
```bash
|
||||
sqlmap -u "http://target.tld/page.php?id=1" --technique="UT" --batch
|
||||
```
|
||||
### Pobierz informacje
|
||||
|
||||
#### Wewnętrzne
|
||||
@ -34,7 +51,7 @@
|
||||
--passwords #Get passwords of users in DB
|
||||
--privileges #Get privileges
|
||||
```
|
||||
#### DB data
|
||||
#### Dane DB
|
||||
```bash
|
||||
--all #Retrieve everything
|
||||
--dump #Dump DBMS database table entries
|
||||
@ -43,17 +60,17 @@
|
||||
--columns #Columns of a table ( -D <DB NAME> -T <TABLE NAME> )
|
||||
-D <DB NAME> -T <TABLE NAME> -C <COLUMN NAME> #Dump column
|
||||
```
|
||||
Używając [SQLMapping](https://taurusomar.github.io/sqlmapping/), jest to praktyczne narzędzie, które generuje polecenia i zapewnia pełny przegląd, zarówno podstawowy, jak i zaawansowany, dla SQLMap. Zawiera ToolTips, które wyjaśniają każdy aspekt narzędzia, szczegółowo opisując każdą opcję, abyś mógł poprawić i zrozumieć, jak używać go efektywnie i skutecznie.
|
||||
Używając [SQLMapping](https://taurusomar.github.io/sqlmapping/), jest to praktyczne narzędzie, które generuje polecenia i zapewnia pełny przegląd, zarówno podstawowy, jak i zaawansowany, dla SQLMap. Zawiera podpowiedzi, które wyjaśniają każdy aspekt narzędzia, szczegółowo opisując każdą opcję, abyś mógł poprawić i zrozumieć, jak używać go efektywnie i skutecznie.
|
||||
|
||||
## Miejsce wstrzyknięcia
|
||||
|
||||
### Z przechwycenia Burp/ZAP
|
||||
|
||||
Przechwyć żądanie i utwórz plik req.txt
|
||||
Przechwyć żądanie i utwórz plik req.txt.
|
||||
```bash
|
||||
sqlmap -r req.txt --current-user
|
||||
```
|
||||
### Wstrzykiwanie Żądania GET
|
||||
### Wstrzykiwanie żądania GET
|
||||
```bash
|
||||
sqlmap -u "http://example.com/?id=1" -p id
|
||||
sqlmap -u "http://example.com/?id=*" -p id
|
||||
@ -80,13 +97,13 @@ sqlmap --method=PUT -u "http://example.com" --headers="referer:*"
|
||||
```bash
|
||||
--string="string_showed_when_TRUE"
|
||||
```
|
||||
### Technika wykrywania
|
||||
### Dodaj technikę wykrywania
|
||||
|
||||
Jeśli znalazłeś SQLi, ale sqlmap go nie wykrył, możesz wymusić technikę wykrywania za pomocą argumentów takich jak `--prefix` lub `--suffix`, lub w przypadku bardziej złożonych, dodając ją do ładunków używanych przez sqlmap w `/usr/share/sqlmap/data/xml/payloads/time_blind.xml`, na przykład dla opartego na czasie ślepego.
|
||||
|
||||
### Eval
|
||||
|
||||
**Sqlmap** pozwala na użycie `-e` lub `--eval`, aby przetworzyć każdy ładunek przed jego wysłaniem za pomocą jednego wiersza kodu w Pythonie. Ułatwia to i przyspiesza przetwarzanie ładunku w niestandardowy sposób przed jego wysłaniem. W następującym przykładzie **sesja cookie flask** **jest podpisywana przez flask znanym sekretem przed jej wysłaniem**:
|
||||
**Sqlmap** pozwala na użycie `-e` lub `--eval`, aby przetworzyć każdy ładunek przed wysłaniem go z użyciem jednego wiersza kodu w Pythonie. Ułatwia to i przyspiesza przetwarzanie ładunku w niestandardowy sposób przed jego wysłaniem. W następującym przykładzie **sesja cookie flask** **jest podpisywana przez flask znanym sekretem przed wysłaniem**:
|
||||
```bash
|
||||
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
|
||||
```
|
||||
@ -150,46 +167,49 @@ Pamiętaj, że **możesz stworzyć własny tamper w pythonie** i jest to bardzo
|
||||
| base64encode.py | Koduje wszystkie znaki w danym ładunku w formacie Base64 |
|
||||
| between.py | Zastępuje operator większy niż ('>') z 'NOT BETWEEN 0 AND #' |
|
||||
| bluecoat.py | Zastępuje znak spacji po instrukcji SQL ważnym losowym znakiem pustym. Następnie zastępuje znak = operatorem LIKE |
|
||||
| chardoubleencode.py | Podwójnie koduje URL wszystkie znaki w danym ładunku (nie przetwarzając już zakodowanych) |
|
||||
| chardoubleencode.py | Podwójnie koduje wszystkie znaki w danym ładunku (nie przetwarzając już zakodowanych) |
|
||||
| commalesslimit.py | Zastępuje wystąpienia takie jak 'LIMIT M, N' z 'LIMIT N OFFSET M' |
|
||||
| commalessmid.py | Zastępuje wystąpienia takie jak 'MID(A, B, C)' z 'MID(A FROM B FOR C)' |
|
||||
| concat2concatws.py | Zastępuje wystąpienia takie jak 'CONCAT(A, B)' z 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)' |
|
||||
| charencode.py | Koduje URL wszystkie znaki w danym ładunku (nie przetwarzając już zakodowanych) |
|
||||
| charunicodeencode.py | Koduje znaki unicode w danym ładunku (nie przetwarzając już zakodowanych). "%u0022" |
|
||||
| charunicodeescape.py | Koduje znaki unicode w danym ładunku (nie przetwarzając już zakodowanych). "\u0022" |
|
||||
| charunicodeencode.py | Koduje znaki unicode w formacie URL w danym ładunku (nie przetwarzając już zakodowanych). "%u0022" |
|
||||
| charunicodeescape.py | Koduje znaki unicode w formacie URL w danym ładunku (nie przetwarzając już zakodowanych). "\u0022" |
|
||||
| equaltolike.py | Zastępuje wszystkie wystąpienia operatora równości ('=') operatorem 'LIKE' |
|
||||
| escapequotes.py | Używa znaku ukośnika do ucieczki cytatów (' i ") |
|
||||
| greatest.py | Zastępuje operator większy niż ('>') jego odpowiednikiem 'GREATEST' |
|
||||
| greatest.py | Zastępuje operator większy niż ('>') jego odpowiednikiem 'GREATEST' |
|
||||
| halfversionedmorekeywords.py | Dodaje wersjonowany komentarz MySQL przed każdym słowem kluczowym |
|
||||
| ifnull2ifisnull.py | Zastępuje wystąpienia takie jak 'IFNULL(A, B)' z 'IF(ISNULL(A), B, A)' |
|
||||
| modsecurityversioned.py | Otacza pełne zapytanie wersjonowanym komentarzem |
|
||||
| modsecurityversioned.py | Otacza pełne zapytanie wersjonowanym komentarzem |
|
||||
| modsecurityzeroversioned.py | Otacza pełne zapytanie zerowym wersjonowanym komentarzem |
|
||||
| multiplespaces.py | Dodaje wiele spacji wokół słów kluczowych SQL |
|
||||
| nonrecursivereplacement.py | Zastępuje zdefiniowane słowa kluczowe SQL reprezentacjami odpowiednimi do zastąpienia (np. .replace("SELECT", "")) filtry |
|
||||
| percentage.py | Dodaje znak procentu ('%') przed każdym znakiem |
|
||||
| percentage.py | Dodaje znak procentu ('%') przed każdym znakiem |
|
||||
| overlongutf8.py | Konwertuje wszystkie znaki w danym ładunku (nie przetwarzając już zakodowanych) |
|
||||
| randomcase.py | Zastępuje każdy znak słowa kluczowego losową wartością wielkości liter |
|
||||
| randomcomments.py | Dodaje losowe komentarze do słów kluczowych SQL |
|
||||
| randomcomments.py | Dodaje losowe komentarze do słów kluczowych SQL |
|
||||
| securesphere.py | Dodaje specjalnie skonstruowany ciąg |
|
||||
| sp_password.py | Dodaje 'sp_password' na końcu ładunku w celu automatycznego zaciemnienia z logów DBMS |
|
||||
| sp_password.py | Dodaje 'sp_password' na końcu ładunku w celu automatycznego zatarcia w logach DBMS |
|
||||
| space2comment.py | Zastępuje znak spacji (' ') komentarzami |
|
||||
| space2dash.py | Zastępuje znak spacji (' ') komentarzem w postaci myślnika ('--') po którym następuje losowy ciąg i nowa linia ('\n') |
|
||||
| space2hash.py | Zastępuje znak spacji (' ') znakiem funta ('#') po którym następuje losowy ciąg i nowa linia ('\n') |
|
||||
| space2morehash.py | Zastępuje znak spacji (' ') znakiem funta ('#') po którym następuje losowy ciąg i nowa linia ('\n') |
|
||||
| space2hash.py | Zastępuje znak spacji (' ') znakiem krzyża ('#') po którym następuje losowy ciąg i nowa linia ('\n') |
|
||||
| space2morehash.py | Zastępuje znak spacji (' ') znakiem krzyża ('#') po którym następuje losowy ciąg i nowa linia ('\n') |
|
||||
| space2mssqlblank.py | Zastępuje znak spacji (' ') losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| space2mssqlhash.py | Zastępuje znak spacji (' ') znakiem funta ('#') po którym następuje nowa linia ('\n') |
|
||||
| space2mssqlhash.py | Zastępuje znak spacji (' ') znakiem krzyża ('#') po którym następuje nowa linia ('\n') |
|
||||
| space2mysqlblank.py | Zastępuje znak spacji (' ') losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| space2mysqldash.py | Zastępuje znak spacji (' ') komentarzem w postaci myślnika ('--') po którym następuje nowa linia ('\n') |
|
||||
| space2plus.py | Zastępuje znak spacji (' ') znakiem plus ('+') |
|
||||
| space2mysqldash.py | Zastępuje znak spacji (' ') komentarzem w postaci myślnika ('--') po którym następuje nowa linia ('\n') |
|
||||
| space2plus.py | Zastępuje znak spacji (' ') znakiem plusa ('+') |
|
||||
| space2randomblank.py | Zastępuje znak spacji (' ') losowym znakiem pustym z ważnego zestawu alternatywnych znaków |
|
||||
| symboliclogical.py | Zastępuje operatory logiczne AND i OR ich symbolicznymi odpowiednikami (&& i |
|
||||
| unionalltounion.py | Zastępuje UNION ALL SELECT z UNION SELECT |
|
||||
| unmagicquotes.py | Zastępuje znak cytatu (') kombinacją wielobajtową %bf%27 razem z ogólnym komentarzem na końcu (aby to działało) |
|
||||
| uppercase.py | Zastępuje każdy znak słowa kluczowego wartością wielką 'INSERT' |
|
||||
| uppercase.py | Zastępuje każdy znak słowa kluczowego wartością wielką 'INSERT' |
|
||||
| varnish.py | Dodaje nagłówek HTTP 'X-originating-IP' |
|
||||
| versionedkeywords.py | Otacza każde nie-funkcyjne słowo kluczowe wersjonowanym komentarzem MySQL |
|
||||
| versionedmorekeywords.py | Otacza każde słowo kluczowe wersjonowanym komentarzem MySQL |
|
||||
| xforwardedfor.py | Dodaje fałszywy nagłówek HTTP 'X-Forwarded-For' |
|
||||
|
||||
|
||||
## References
|
||||
- [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