Featured image of post SQLMap进行SQL注入测试

SQLMap进行SQL注入测试

提示: 仅供学习使用,严禁用于违法用途

提示: 仅供学习使用,严禁用于违法用途

介绍

简介

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
2
3
git clone --depth 1 https://github.com/sqlmapproject/sqlmap.git sqlmap
cd sqlmap
python sqlmap.py

你也可以将它配置到环境变量中,具体方法请上搜索引擎找 运行图 我这边配置了环境变量,所以可直接执行

使用

1. 检查是否存在注入

例如注入目标为:http://127.0.0.1:8080/?id=1 则命令如下

1
python sqlmap.py -u "http://127.0.0.1:8080/?id=1"

执行过程如下 执行过程 执行完毕后,可看到数据库类型,如果服务器后端使用的是PHP语言,会显示PHP的版本 执行完毕 如图所示,数据库类型为 MySQL PHP版本为 8.1.8

2. 查询当前用户下所有数据库

用途:该命令在确定网站存在SQL注入漏洞时,用于查询当前用户下的数据库

1
python sqlmap.py -u "http://127.0.0.1:8080/?id=1" --dbs

所有数据库 运行结束后可看到一些 数据库 的名称,它们将以[*]开头 --dbs参数缩写成-D xxx,该参数为查询xxx数据库下的内容

3. 获取数据库中的表名

用途:该命令在确定网站存在SQL注入漏洞时,可获取数据库下所有表的名称

-D 参数用来指定数据库,例如 -D moieo

1
python sqlmap.py -u http://127.0.0.1:8080/?id=1 -D moieo --tables

所有数据表 运行结束后可看到所有数据表的名称,继续注入可使用 -T 参数,该参数为 --tables的缩写,用于指定数据表继续注入获取数据

4. 获取数据表的字段名

用途:在查询完表名后,指定数据库和数据表进行注入测试,获取该表下所有字段

1
python sqlmap.py -u http://127.0.0.1:8080/?id=1 -D moieo -T moieo_comments --columns

所有字段 运行结束后得到所有字段

5. 获取数据表内存储的数据

用途:在获取并确定数据表内有字段时使用,可获得数据表内存储的数据

1
python sqlmap.py -u http://127.0.0.1:8080/?id=1 -D moieo -T moieo_comments --dump

表内的所有数据 可以看到,执行结束后可获得数据表内每个字段的数据

其他选项

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 从数据库服务器中读取文件,参数为数据库服务器中的文件路径

昵称
邮箱
网址
0/500
0 条评论
没有评论
查看更多