工具
01MetasploitFramework
02Nmap
03SQLMap
-
+
首页
03SQLMap
## 概述 SQLMap是一款开源的渗透测试工具,可用来进行自动化检测,利用SQL注入漏洞,获取数据库服务器的权限等操作 SQLMap支持的数据库有:MySQL、Oracle、Microsoft SQL Server、Microsoft Access,IBM DB2、SQLite等主流数据库 检测类型:union联合查询注入、布尔盲注、时间盲注、报错注入、堆叠注入 ## 参数使用 > 输出详细程度参数 -v -v 参数用来指定输出数据的详细程度,一共有七个等级(0--6) 默认为1,可使用-vv 代替-v 2 | 等级 | 说明 | | ---- | ---------------------------------------- | | 0 | 只输出Python出错回溯信息、错误和关键信息 | | 1 | 增加输出普通信息和警告信息 | | 2 | 增加输出调试信息 | | 3 | 增加输出已注入的payloads | | 4 | 增加输出HTTP请求 | | 5 | 增加输出HTTP响应头 | | 6 | 增加输出HTTP响应内容 | > 目标参数 | 参数 | 说明 | | --------------- | -------------------------------- | | -d | 直连数据库 | | -u | URL,指定需要检测的目标URL | | -l | 从Burp代理日志文件中解析目标地址 | | -m | 从文本文件中批量获取目标 | | -r | 从文件中读取HTTP请求 | | --purge | 清除历史缓存 | | --flush-session | 清除上次扫描缓存 | **注意** 使用 -d 时,例如:python2 sqlmap.py -d "mysql://root:[123456@192.168.136.1](mailto:123456@192.168.136.1):3306/security" 需要先使用Python安装“python-pymysql” 第三方库,才能够直连MySQL数据库【直连其他数据库与连接MySQL数据库类似】 > 请求参数 指定连接目标的方式,有以下几种参数 | 参数 | 说明 | | ------------------ | --------------------------------------------------------- | | --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 1 | 检测GET和POST | | --level 2 | 增加检测HTTP Cookie | | --level 3 | 增加检测User-Agent和Referer | | --level 4 | 增加检测host | | --level 5 | 增加检测host | - level >= 2时会检测cookie是否有注入 - level >= 3时会检测User-Agent和Referer是否有注入 - level >= 5时会检测Host是否存在注入漏洞 不确定哪个payload或者参数为注入点的时候,为了保证全面性,建议使用高的level值 --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 使用该参数后,就可执行相应的系统命令 **使用条件** 1、攻击者需要知道网站的绝对路径(sqlmap中可爆破路径) 2、用户账号权限为管理员(网站必须是root权限或者为Administrator) 3、GPC为off,php主动转义的功能关闭 4、secure_file_priv为空 ## 上传webshell **原理** 通过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
毛林
2025年9月7日 11:43
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码