目录
SQLMAP
观察数据
参数 -v
共有七个等级,默认为1:
-v 0 只显示python错误以及严重的信息。
-v 1 同时显示基本信息和警告信息。(默认)
-v 2 同时显示debug信息。
-v 3 同时显示注入的payload。
-v 4 同时显示HTTP请求。
-v 5 同时显示HTTP响应头。
-v 6 同时显示HTTP响应页面。
如果你想看到sqlmap发送的测试payload最好的等级就是3。
获取目标方式
直接连接到数据库
参数 -d
例如 sqlmap -d "mysql://root:root@192.168.1.200:3306/test"
目标url
参数 -u ,-url
例如 sqlmap -u "http:192.168.1.200/index.php?id=1"
从文本中获取多个目标url
参数 -m
url 会保存在文档中,sqlmap会一个个检测
从文件中加载http请求
参数 -r
如果目标是post请求,可以直接将其请求导入到文件中,然后-r 调用这个文件
请求方式
http 数据
参数 --data
把数据以post的方式提交
例如 sqlmap -u "http:192.168.1.200/index.php" --data="id=1"
HTTP cookie头
参数 --cookie
当web应用需要登录的时候,需要cookie值做验证
HTTP User-Agent头
参数 --user-agent,--random-agent
默认情况下sqlmap的HTTP请求头中User-Agent值是:
sqlmap/1.0-dev-xxxxxxx (http://sqlmap.org)
可以使用--user-anget参数来修改,同时也可以使用--random-agnet参数来随机的从./txt/user-agents.txt中获取。
当--level参数设定为3或者3以上的时候,会尝试对User-Angent进行注入。
HTTP Host头
参数 --host
手动设置HTTPHost的值
HTTP Referer头
参数 --referer
可以伪造http请求头中的referer字段
当--level参数设定为3或者3以上的时候,会尝试对referer进行注入
设定超时时间
参数 --timeout
可以设定一个HPPT请求超过多久会被判定为超时,以秒为单位,默认30秒
注入技术
设定注入方式
参数 --technique
这个参数可以指定sqlmap使用的探测技术,默认情况下会测试所有的方式。
B:布尔型注入
E:报错型注入
U:可联合查询注入
S:可多语句查询注入
T:基于时间延迟注入
设定延迟注入时间
参数 --time-sec
默认为5秒
设定UNION查询字段数
参数 --union-cols
默认情况下sqlmap测试UNION查询注入会测试1-10个字段数,当--level 为5的时候会增加测试到50个字段,如10-12,是测试10到12个字段数
设定UNION查询使用的字符
参数 --union-char
默认情况下sqlmap针对UNION查询的注入会使用NULL字符,但是有些情况下会造成页面返回失败,而使用一个随机整数是成功的,这时你可以使用--union-char指定UNION查询的字符
列数据
标志
参数 -b,--banner
大多数的数据库系统有一个函数可以返回数据库的版本号,通常这个函数是version()或者变量@@version这主要取决于是什么数据库
用户
参数 --current-user
在大多数数据库中可以获取管理数据的用户
当前数据库
参数 --current-db
返回当前连接的数据库
列数据库管理用户
参数 --users
当前用户有权限读取所有用户时,就可列出
列出数据库系统的数据库
参数 --dbs
当前用户有权限读取包含所有数据库列表信息时,就可列出所有数据库
列举数据库表
参数 --tables
如果不提供-D参数来指定一个数据库,那么sqlmap会列举所有数据库的所有表
列举数据库表中的字段
参数 --columns
如果没有-D参数指定数据库时,默认使用当前数据库
获取表中数据个数
参数 --count
有时候用户只想获取数据表中的个数而不是具体内容,那么可以该参数
获取整个表的数据
参数 --dump
使用-T -D 参数指定想要获取哪个数据库的哪个表中的内容,没有-D参数默认当前数据库
指定字段,表,数据库
参数 -C -T -D
-C 指定字段
-T 指定表
-D 指定数据库
其他
刷新session文件
参数 --flush-session
如果不想用之前缓存这个目标的session文件,可以使用这个参数。 会清空之前的session,重新测试该目标。