渗透测试工具使用——sqlmap

Sqlmap

目录

Sqlmap

1.1 sqlmap的使用

1.2sqlmap的参数

1.2.1sqlmap常用的参数 

1.3sqlmap的更多用法


sqlmap支持五种不同的注入模式:

l 基于布尔的盲注,即可以根据返回页面判断条件真假的注入;

l 基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断;

l 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中;

l 联合查询注入,可以使用union的情况下的注入;

l 堆查询注入,可以同时执行多条语句的执行时的注入。

1.1 sqlmap的使用

判断是否存在sql注入,和类型

类型:

  • 报错注入

  • 盲注

1.2sqlmap的参数

SQLMap
1.输出详细程度
2.目标参数
3.请求参数
4.注入参数
5.检测参数
6.技术参数
7.枚举参数
8.tamper脚本

1.输出详细参数

-v 参数用来指定输出数据的详细程度,一共七个等级:0~6
(默认为1,可以用-vv代替-v 2)
0:只输出 Python 出错回溯信息,错误和关键信息
1:增加输出普通信息和警告信息
2:增加输出调试信息
3:增加输出已注入的 payloads
4:增加输出 HTTP 请求
5:增加输出 HTTP 响应头
6:增加输出 HTTP 响应内容

2.目标参数 

-d
直连数据库,例如 python -sqlmap.py -d "mysql://root:[email protected]:3306/testdb"
-u
URL,指定需要检测的目标url
-l
从Burp代理日志文件中解析目标地址
-m
从文本文件中批量获取目标
-r
从文件中读取 HTTP 请求
--purge
清除历史缓存
--flush-session
清除上次扫描的缓存

3.请求参数 

--method=METHOD
强制使用提供的 HTTP 方法(例如:PUT)
--data=DATA
使用 POST 发送数据串;--data="id=1&user=admin"
--param-del=";"
使用参数分隔符,--data="id=1;user=admin"
--cookie=COOKIE
指定 HTTP Cookie
--drop-set-cookie
忽略 HTTP 响应中的 Set-Cookie 参数
--user-agent=AGENT
指定 HTTP User-Agent
--random-agent
使用随机的 HTTP User-Agent,随机从 ./txt/user-agents.txt 选取
--referer=REFERER
指定 HTTP Referer
-H HEADER
设置额外的 HTTP 头参数(例如:"X-Forwarded-For: 127.0.0.1")
--headers=HEADERS
设置额外的 HTTP 头参数,必须以换行符分隔(例如:"Accept-
Language: fr\nETag: 123")
--delay=10
设置每个 HTTP 请求的延迟秒数
--safe-freq=SAFE
每访问两次给定的合法 URL 才发送一次测试请求
4.注入参数
-p
指定需要测试的参数
--skip=SKIP
指定要跳过的参数
--dbms=DBMS
指定 DBMS 类型(例如:MySQL)
--os=OS
指定 DBMS 服务器的操作系统类型
--prefix=PREFIX
注入 payload 的前缀字符串
--suffix=SUFFIX
注入 payload 的后缀字符串
--tamper=TAMPER
用给定脚本修改注入数据

 5.检测参数

用于指定检测的级别以及风险的参数:
--level:指定检测级别,有五个等级,等级越高检测范围越大(默认为1)
--level 1
检测Get和Post
--level 2
增加检测HTTP Cookie
--level 3
增加检测User-Agent和Referer
级别4和5会对更大范围的payload进行检测
--risk:风险程度,有3个等级(默认为1)
--risk 2
会在默认的检测上添加大量时间型盲注语句测试
--risk 3
会在原基础上添加OR类型的布尔型盲注

6.技术参数 

--technique=
使用的 SQL 注入技术(默认为“BEUSTQ”)
  B:
布尔型盲注(Boolean-based blind SQL injection)
  E:
报错型注入(Error-based SQL injection)
  U:
联合查询注入(UNION query SQL injection)
 S:
堆查询注入(Stacked queries SQL injection)
  T:
时间型盲注(Time-based blind SQL injection)
  Q:
内联查询注入( inline Query injection)
--time-sec=TIMESEC 设置延时注入的时间(默认为 5)
--second-order=
设置二阶响应的结果显示页面的 URL(该选项用于二阶 SQL注
入)

7.枚举参数 

-a, --all
获取所有信息、数据
-b, --banner 获取banner,返回数据库的版本号
--current-user 获取当前用户
--current-db 获取当前数据库
--hostname 获取服务器的主机名
--is-dba 探测当前用户是否为 DBA(数据
库管理员)
--users 枚举出所有用户
--passwords 枚举出所有用户的密码哈希
--privileges 枚举出所有用户特权级
--roles 枚举出所有用户角色
--dbs
枚举出所有数据库
--tables 枚举出数据库中的所有表
--columns 枚举出指定表中的所有列
--schema 枚举出所有模式
--count 获取数据表数目
--dump 导出数据库表项
--stop 10 只取前10行数据
-D DB 指定要枚举的数据库
-T TBL 指定要枚举的数据表
-C COL 指定要枚举的数据列
--sql-query=QUERY 指定要执行的 SQL 语句
--sql-shell
调出交互式 SQL shell

8.tamper 

--tamper= "模块名"
  apostrophemask
将单引号 url 编码
  apostrophenullencode
将单引号替换为宽字节 unicode 字符
  base64encode
base64 编码
  between
大于符号和等号用 between 语句替换,用于过滤了
大于符号和等号的情况
  bluecoat
用随机的空白字符代替空格,并且将等号替换为 like ,
用于过滤了空格和等号的情况
  charencode
用 url 编码payload
  charunicodeencode
用 unicode 编码 payload

1.2.1sqlmap常用的参数 

python sqlmap.py -u url --users #列出所有用户
python sqlmap.py -u url --current-user #列出当前用户
python sqlmap.py -u url --is-dba #查看当前用户是否为数据库管理员
python sqlmap.py -u url --dbs #列出所有数据库
python sqlmap.py -u url --current-db #查看当前数据库
python sqlmap.py -u url -D "数据库名称" --tables #查表名
python sqlmap.py -u url -D "数据库名" -T "表名" --colunms #查列名
python sqlmap.py -u url -D "数据库名" -T "表名" -C "列名" --dump #查询记录
python sqlmap.py -u url --data "POST数据" #POST请求注入
python sqlmap.py -r r.txt #将整个请求数据包保存为r.txt进行注入

   

1.3sqlmap的更多用法

  • 获取数据库用户列表

  • 上传木马文件,在对系统有控制权限之后 (一句话木马) --os-shell 执行操作系统的命令

  • 绕过waf安全狗,识别可以使用kali工具wafw00f 参数绕过 (匿名注入,HTTP头部注入)指定脚本绕过 sqlmap会提供脚本

  • 探测等级和危险等级

  • 读取服务器的文件 上传文件

Guess you like

Origin blog.csdn.net/qq_53633989/article/details/130552379