sqlmap中文手册

Sqlmap中文手册  -Darren制作

零、前言

Sqlmap是十分著名的、自动化的SQL注入工具。为了较为系统地学习Sqlmap,我决定翻译一遍Sqlmap的用户手册,于是便有了此文。由于我英语学得很差,所以翻译地不好。基本上是意译,还加入了我自己的东西,和原文有较大差距。

一、Sqlmap是什么

Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点:

完全支持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时支持执行任意命令并回现标准输出。

二、安装Sqlmap

Sqlmap的开源项目,托管在github,最简单的安装方式便是使用git,执行如下命令:

  git clone https://github.com/sqlmapproject/sqlmap.git

片刻后命令执行完毕,可以看到当前目录中多了一个名为“sqlmap”的目录,
该目录中保存着Sqlmap的Python源码、配置文件和文档。
由于Python是解释执行的语言,不用编译,所以至此最新版的Sqlmap已经安装完成。
cd到“sqlmap”目录中,用命令“python sqlmap”启动Sqlmap,如下图所示:

 

当想要更新Sqlmap时,进入到“sqlmap”目录中执行命令“git pull”即可。

三、输出级别(Output verbosity)

参数:-v

Sqlmap的输出信息按从简到繁共分为7个级别(和葫芦娃一样多),依次为0、1、2、3、4、5和6。使用参数“-v <级别>”来指定某个等级,如使用参数“-v 6”来指定输出级别为6。默认输出级别为1。各个输出级别的描述如下:

0:只显示Python的tracebacks信息、错误信息[ERROR]和关键信息[CRITICAL];

1:同时显示普通信息[INFO]和警告信息[WARNING];

2:同时显示调试信息[DEBUG];

3:同时显示注入使用的攻击荷载;

4:同时显示HTTP请求;

5:同时显示HTTP响应头;

6:同时显示HTTP响应体。

各个级别输出的信息详细到什么程度,还需要自己尝试下,亲眼见到,才会有明确的认识。

四、指定目标

Sqlmap运行时必须指定至少一个目标,支持一次指定多个目标。有以下几种指定目标的方式:

1.直接连接数据库

参数:-d

使用参数“-d”直接连接数据库,该参数后跟一个表示数据库的字符串,该字符串有以下两种格式:

(1).当数据库管理系统是MySQL、Oracle、Microsoft SQL Server或PostgreSQL等时格式为:

  DBMS://USER:PASSWORD@DBMS_IP:DBMS_PORT/DATABASE_NAME

(2).当数据库管理系统是SQLite、Microsoft Access或Firebird等时格式为:

  DBMS://DATABASE_FILEPATH

我用如下命令连接装在本机上的Mysql:

  python sqlmap.py -d "mysql://root:root@127.0.0.1:3306/DISSchool"

却出现了错误,错误为:

  [CRITICAL] sqlmap requires 'python-pymysql' third-party library in order to directly connect to the DBMS 'MySQL'. You can download it from 'https://github.com/petehunt/PyMySQL/'. Alternative is to use a package 'python-sqlalchemy' with support for dialect 'mysql' installed

意思是我没有安装Python连接Mysql用的第三方库python-pymysql。虽然我安装了python-mysqldb可以使Python连接Mysql,但显然Sqlmap使用的是python-pymysql而不是python-mysqldb。使用如下命令安装python-pymysql:

  git clone https://github.com/petehunt/PyMySQL/

  cd PyMySQL/

  sudo python setup.py install

安装好python-pymysql后再执行命令:

  python sqlmap.py -d "mysql://root:root@127.0.0.1:3306/DISSchool"

这次没有报错,成功的连接到了数据库。只是除了检测数据库确实是Mysql版本号大于等于5.0.0之外便什么都没有做。让Sqlmap做点什么需要用其他参数指定,这些参数我们稍晚些再学习。

2.指定目标URL

参数:-u 或 –url

使用参数“-u”或“–url”指定一个URL作为目标,该参数后跟一个表示URL的字符串,可以是http协议也可以是https协议,还可以指定端口,如:

  python sqlmap.py -u "http://192.168.56.102:8080/user.php?id=0"

3.从Burp或WebScarab的代理日志中解析目标

参数:-l

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpyxgg.html