1. sqlmap是什么

在这个数据有价的时代数据库安全已经成为了重中之重,于是就整理了一下最常用的一款(反正我上大学的时候它还是蛮流行的...)数据库安全方面的渗透测试工具sqlmap的使用笔记。

sqlmap是一个自动化的sql注入渗透工具,指纹检测、注入方式、注入成功后的取数据等等都是自动化的,甚至还提供了一个字典来将取回来的hash爆破,当然对于真实环境中这爆破功能战斗力基本为0....

sqlmap是使用python写的,因此具有跨平台的特性,并且下载下来解压就可以使用啦,因此下载安装部分不再介绍。

2. 如何使用

模拟一个真实的场景,我写了一个有sql注入漏洞的登录接口作为测试用来练习sqlmap的使用,就拿它开刀来取得一个合法的登录口令。

step 1. 检测注入点

首先检测参数是否可注入:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar"

需要注意的是上面的url一定要用引号括起来不然会报错的。

按照提示一步一步选择即可,如果觉得选项太多太麻烦可以使用--batch来让程序自己个选择:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch

如果可以注入的话,结果应该是类似于这个样子的:

上面的意思就是发现了两个注入点,这两个注入点就是传入的username和passwd参数。

step 2. 取数据

当手中有了注入点的时候,就相当于是有了这个数据库的访问权,接下来把需要的数据取回来即可。

想象一下登录口令一定存放在某张表下,可是我连这台机器上都有哪些数据库都不知道该怎么办呢,--dbs查看数据库:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch --dbs

我自己机器数据库有些不可描述的库,我打了下码,大致就是这个样子吧:

我是能看到有哪些数据库了,但这有毛线用啊,我想知道的是这个应用程序当前使用的数据库是哪个啊,使用 --current-db:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch --current-db

啊我看到了当前的数据库是sql_inject_demo,我要赶紧知道这个库下面都有哪些表:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo --tables

啊,可恶,忘了多做几张混淆视听的表了,在实际环境中一般都会有百八十张表差不多的,但是存储用户的一般脑回路正常的都会跟user这个词沾边的,所以确定到底是哪个表是用户表难度还是蛮低的,好了这一关权当放水通过了,接下来我要看这张表中都有哪些字段,因为我需要用户名和密码这两个列的数据,但是首先我得知道存储这两个字段的列名字,所以看一下这个用户表的表结构:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo -T t_user --columns

呃,好吧,这个表的结构过于简单,又算是放水了,不过一般存储用户名的列都会叫user、username、name之类的,存储密码列的都会跟passwd、password、auth之类的沾边的,如果不确定的话就多取几列也没关系的,现在已经确定了字段的名字了,把它拿回来:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D sql_inject_demo -T t_user -C 'username, passwd' --dump

这个过程可能会稍微有点慢,因为使用了--batch让sqlmap对一些询问的选项自己看着办,其中有一个检测到hash询问是否字典爆破的这货默认给爆破了,所以可能需要等上好一阵子才能看到结果:

哈,这个时候我们已经得到了想要的东西,一个访问口令,GET!它就是 admin / admin。

因为我这里设置的是弱口令,所以很快就跑出来了,如果密码复杂度很高的话可能需要保存下来另外使用专门的爆破工具来搞一搞。

这里有个坑,我开始写的时候密码习惯性的加了盐,然后就跑不出来了,后来注释掉了,至于加了盐的密码该怎么搞我也布吉岛....

作为一个有野心的脚本小子,怎么能满足于只get一个web访问口令呢,我们都知道mysql的元数据什么的都是存储在它的一个叫mysql的库中,包括访问系统的口令,所以这个时候可以如法炮制,获得数据库的访问口令:

./sqlmap.py -u "http://192.168.3.64:8080/user/login?username=foo&passwd=bar" --batch -D mysql -T user -C 'user, authentication_string' --dump

哈,这么简单就得到了mysql的root访问权限....

当然实际环境中不会这么顺利啦,这里只是作为一个演示而已。

关于sqlmap的更多选项使用,请查阅官方文档: https://github.com/sqlmapproject/sqlmap/wiki/Usage

靶子项目代码地址: https://github.com/CC11001100/sql-inject-demo

参考资料:

1. http://sqlmap.org/

2. https://github.com/sqlmapproject/sqlmap/wiki/Usage

渗透测试工具之sqlmap的更多相关文章

  1. 渗透测试工具SQLmap

    一.简介 SQLmap 是一款用 Python 编写的开源渗透测试工具,用来自动检测和利用 SQL 注入漏洞. 二.Windows 下安装 2.1 安装 Python 环境 注:Python 3.0会 ...

  2. github渗透测试工具库

    本文作者:Yunying 原文链接:https://www.cnblogs.com/BOHB-yunying/p/11856178.html 导航: 2.漏洞练习平台 WebGoat漏洞练习平台: h ...

  3. github渗透测试工具库[转载]

    前言 今天看到一个博客里有这个置顶的工具清单,但是发现这些都是很早以前就有文章发出来的,我爬下来后一直放在txt里吃土.这里一起放出来. 漏洞练习平台 WebGoat漏洞练习平台:https://gi ...

  4. 渗透测试工具BurpSuite做网站的安全测试(基础版)

    渗透测试工具BurpSuite做网站的安全测试(基础版) 版权声明:本文为博主原创文章,未经博主允许不得转载. 学习网址: https://t0data.gitbooks.io/burpsuite/c ...

  5. 18个扩展让你的Firefox成为渗透测试工具

    Firefox是一个出自Mozilla组织的流行的web浏览器.Firefox的流行并不仅仅是因为它是一个好的浏览器,而是因为它能够支持插件进而加强它自身的功能.Mozilla有一个插件站点,在那里面 ...

  6. Android平台下渗透测试工具大集合

    Android平台下渗透测试工具大集合 分享一个google的项目,各种Android下的渗透测试工具. Ad Network Detector (1.2): http://market.androi ...

  7. 自动渗透测试工具集APT2

    自动渗透测试工具集APT2   APT2是Kali Linux新增的一款自动渗透测试工具集.它可以进行NMAP扫描,也可以直接读取Nexpose.Nessus和NMAP的扫描结果,然后自动进行渗透测试 ...

  8. GyoiThon:基于机器学习的渗透测试工具

    简介 GyoiThon是一款基于机器学习的渗透测试工具. GyoiThon根据学习数据识别安装在Web服务器上的软件(操作系统,中间件,框架,CMS等).之后,GyoiThon为已识别的软件执行有效的 ...

  9. 轻量级Web渗透测试工具jSQL

    轻量级Web渗透测试工具jSQL jSQL是Kali集成的一款轻量级的Web渗透测试工具.最初该工具主要实施SQL注入,后来增加更多的功能,扩展形成一个综合性的Web渗透测试工具.Kali提供的版本较 ...

随机推荐

  1. 运用Zabbix实现内网服务器状态及局域网状况监控(1) —— Zabbix介绍

    一.Zabbix简介 Zabbix 是一个企业级的.开源的.分布式的监控套件 Zabbix 可以监控网络和服务的监控状况. Zabbix 利用灵活的告警机制,允许用户对事件发送基于 Email 的告警 ...

  2. npm install报错node-sass

    1.node-sass安装错误 Building: C:\Program Files\nodejs\node.exe D:\gitlab\coreui\node_modules\node-gyp\bi ...

  3. 同步、异步、阻塞、非阻塞与future

    前言 随着移动互联网的蓬勃发展,手机App层出不穷,其业务也随之变得错综复杂.针对于开发人员来说,可能之前的一个业务只需要调取一次第三方接口以获取数据,而如今随着需求的增加,该业务需调取多个不同的第三 ...

  4. PHP7 学习笔记(三)关于PHP7如何安装调试工具Xdebug扩展以及Zephir的问题

    前言: 1.自己摸索安装 2.快速安装 安装这个扩展是由于Zephir 编译不能始终通过,迫不得已啊,使用Zephir写扩展,总是出现以下错误: www@ubuntu1:~/phalcon-zephi ...

  5. 20155231 2016-2017-2 《Java程序设计》第6周学习总结

    20155231 2016-2017-2 <Java程序设计>第6周学习总结 教材学习内容总结 学习目标 理解流与IO 理解InputStream/OutPutStream的继承架构 理解 ...

  6. Postfix 邮件服务 - DNS服务

    DNS 服务 (系统需要配置静态 IP 地址) yum install bing* -y 一.配置 NDS 域名解析: 直接添加以下内容: [root@mail ~]# cat /etc/named. ...

  7. 多文档界面QMdiArea

    当使用多文档界面功能时,我们是将QMdiArea作为主窗口的中央部件,然后在这个中央部件中,我们可以同时打开很多个子窗口QMdiSubWindow 样式: import sys from PyQt5. ...

  8. 查看Mac电脑的核心数量

    #显示物理核心数sysctl hw.physicalcpu#显示逻辑核心数sysctl hw.logicalcpu  

  9. mysql 架构 ~异地容灾

    一 简介 我们来探讨下多机房下的mysql架构二 目的:    首先要清楚你的目的     1 实现异地机房的容灾备份      2 实现异地机房的双活 三 叙说     1 实现异地机房的容灾备份  ...

  10. 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础

    2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...