一文了解SQLMap

目录

SQLMap概述

SQLMap参数使用

输出详细程度参数 -v

目标参数

请求参数

注入参数

检测参数

技术参数

枚举参数

系统交互式shell


SQLMap概述

  • SQLMap是一款开源的渗透测试工具,可用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器 的权限等操作 SQLMap支持的数据库有:MySQL、Oracle、Microsoft SQL Server、Microsoft Access,IBM DB2、 SQLite等主流数据库 检测类型:union联合查询注入、布尔盲注、时间盲注、报错注入、堆叠注入

SQLMap参数使用

  • 输出详细程度参数 -v

    • -v参数用来指定输出数据的详细程度,一共有七个等级(0--6)
    • 默认为1,可使用-vv代替-v 2
等级说明

0

只输出Python出错回溯信息、错误和关键信息
1增加输出普通信息和警告信息
2增加输出调试信息
3增加输出已注入的payloads
4增加输出HTTP请求
5增加输出HTTP响应头
6增加输出HTTP响应内容
  • 目标参数

等级说明

-d

直连数据库
-uURL,指定需要检测的目标URL
-l从Burp代理日志文件中解析目标地址
-m从文本文件中批量获取目标
-r从文件中读取HTTP请求
--purge清除历史缓存
--flush-session清除上次扫描缓存
  • 请求参数

    • 指定连接目标的方式,有以下几种参数
参数        说明
--method=METHOD强制使用提供的HTTP方法,如:GET、POST、PUT等
--data=DATA使用POST方法发送数据,如:--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
--referer=REFERER指定HTTP Referer
-H HEADER设置额外的HTTP 头参数,如:-H "X-Forwarded-For:127.0.0.1"
--headers=HEADERS设置额外的HTTP头参数,必须以换行符分隔
--delay=10设置每个HTTP请求的延迟秒数
--safe-freq=SAFE每访问两次给定的合法URL才发送一次测试请求
--batch会自动选择默认项(Y)
  • 注入参数

    • 用于指定要测试的参数
参数说明
-p指定需要测试的参数
--skip=SKIP指定要跳过的参数
--dbms=DBMS指定DBMS类型,如:--dbms=MySQL
--os=OS指定DBMS服务器的操作系统类型
--prefix=PREFIX注入payload的前缀字符串
--suffix=SUFFIX注入payload的后缀字符串
--tamper-TAMPER用给定脚本参数注入数据
  • 检测参数

    • 用于指定检测的等级以及风险参数
    • --level:指定检测级别,共有五个等级,等级越高,检测范围越大(默认为1)
    • level >= 2时会检测cookie是否有注入
    • level >= 3时会检测User-Agent和Referer是否有注入
    • level >= 5时会检测Host是否存在注入漏洞
    • 不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值
参数说明
--level 1检测GET和POST
--level 2增加检测HTTP Cookie
--level 3增加检测User-Agent和Referer
--level 4增加检测host
--level 5增加检测host

        --risk:风险程度,有三个等级(默认为1)

参数说明
--risk 1测试大部分的测试语句        
--risk 2增加基于事件性的测试语句
--risk 3增加OR语句的sql注入测试
  • 技术参数

    • 以下参数用于调整特定的SQL注入技术的测试方法
参数说明
--technique=后面跟使用的SQL注入技术
B布尔型盲注
T时间型盲注
U联合查询注入
S堆查询注入
E报错型注入
Q内联查询注入
--time-sec=TIMESEC设置延迟注入的时间,默认为5s
--second-order=设置二阶响应的结果显示页面的URL,该选项用于二阶SQL注入
  • 枚举参数

参数 

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

    • 参数: --os-shell 使用该参数后,就可执行相应的系统命令
    • 使用条件
      • 攻击者需要知道网站的绝对路径(sqlmap中可爆破路径)
      • 用户账号权限为管理员(网站必须是root权限或者为Administrator)
      • GPC为off,php主动转义的功能关闭
      • secure_file_priv为空
    • 原理
      • 通过into outfile 导出文件,利用SQL语句拿到shell权限
      • --os-shell本质是利用into outfile函数将一个可以上传文件的网页(tmpulcjf.php)写入到网站根目录 下,然后利用tmpulcjf.php上传了一个tmpbtrnt.php文件,可以执行系统命令,连接密码为cmd
    • 补充
      • 导入导出的权限在MySQL数据库中是由secure_file_priv参数控制,当这个参数后面为null时,表示不允 许导入导出;如果为具体的文件夹时,表示只允许在这个文件夹下导入导出;如果secure_file_priv参数 后面没有值(为空)时,表示可以在任何文件夹下导入导出
      • 当MySQL版本在5.7以上时,secure_file_priv参数的值默认为null,如果管理员没有修改过该参数,则无 法使用--os-shell
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值