提示: 仅供学习使用,严禁用于违法用途
介绍
简介
SQLMap 是一个开源的渗透测试工具,可以用来自动化检测,利用 SQL 注入漏洞,获取数据库的权限。 它的检测引擎非常强大,针对不同类型的数据库有不同的方案和选项,获取数据库中存储的数据。
目前支持 MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access 等数据库
输出级别
0:只显示 python 错误以及严重的信息 1:同时显示基本信息和警告信息(默认) 2:同时显示 debug 信息 3:同时显示注入的 payload 4:同时显示 HTTP 请求 5:同时显示 HTTP 响应头 6:同时显示 HTTP 响应页面
安装
注:安装 SQLMap 需要 Python 环境 {% link https://sqlmap.org SQLMap官网 %}
克隆仓库
| |
你也可以将它配置到环境变量中,具体方法请上搜索引擎找
我这边配置了环境变量,所以可直接执行
使用
1. 检查是否存在注入
例如注入目标为:http://127.0.0.1:8080/?id=1 则命令如下
| |
执行过程如下
执行完毕后,可看到数据库类型,如果服务器后端使用的是 PHP 语言,会显示 PHP 的版本
如图所示,数据库类型为 MySQL
PHP 版本为 8.1.8
2. 查询当前用户下所有数据库
用途:该命令在确定网站存在 SQL 注入漏洞时,用于查询当前用户下的数据库
| |
运行结束后可看到一些 数据库 的名称,它们将以[*]开头
--dbs参数缩写成-D xxx,该参数为查询xxx数据库下的内容
3. 获取数据库中的表名
用途:该命令在确定网站存在 SQL 注入漏洞时,可获取数据库下所有表的名称
-D 参数用来指定数据库,例如 -D moieo
| |
运行结束后可看到所有数据表的名称,继续注入可使用 -T 参数,该参数为 --tables的缩写,用于指定数据表继续注入获取数据
4. 获取数据表的字段名
用途:在查询完表名后,指定数据库和数据表进行注入测试,获取该表下所有字段
| |
运行结束后得到所有字段
5. 获取数据表内存储的数据
用途:在获取并确定数据表内有字段时使用,可获得数据表内存储的数据
| |
可以看到,执行结束后可获得数据表内每个字段的数据
其他选项
1. 获取数据库所有用户
在有权管理所有用户的情况下 --users 选项可获得数据库所有用户名
2. 获取数据库用户的密码
在有权管理所有用户的情况下 --passwords 选项可获得所有用户的密码,该选项获得到的数据是经过哈希算法加密的
可以尝试使用 https://www.cmd5.com/ 硬解
3. 获取当前网站数据库的名称
--current-db 选项,可获得当前网站数据库的名称
4. 获取当前网站数据库使用的用户名称
--current-user 选项,用于获取当前用户名称
杂项
--is-dba 用于判断用户是否管理员权限
--roles 列出数据库管理员角色
--referer,当--level的参数为 3 或以上,用于指定来源网站,欺骗目标网站,参数为 URL
--sql-shell 运行自定义 SQL 语句
--os-cmd 或 --os-shell 执行任意操作系统命令
--file-write xxx.php --file-dest xxx.php 上传文件到数据库服务器,前者为源文件路径,后者为目标数据库服务器的文件路径
--file-read 从数据库服务器中读取文件,参数为数据库服务器中的文件路径