一、sqlmap简介
sqlmap是一个自动化SQL注入测试工具,它支持的数据库有MySQL、MSSQL、Oracle、PostgreSQL、Access、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB。sqlmap默认使用以下5种SQL注入技术:
- 基于布尔的盲注:根据返回页面判断条件真假的注入。
- 基于时间的盲注:当不能根据页面返回内容判断任何信息时,根据时间延迟语句是否执行(即页面 返回时间是否增加)进行判断。
- 基于错误的注入:根据页面返回的错误信息,或者注入语句的结果是否被包含在页面进行判断。
- 联合查询注入:根据UNION语句注入的结果进行判断。
- 堆叠注入:根据执行多条SQL语句注入的结果进行判断
二、sqlmap注入流程
为了更好的理解sqlmap,有必要了解下sqlmap的工作流程:
三、启动sqlmap
kali中已经预装了sqlmap(kali的安装过程在网络安全专栏有介绍)
四、sqlmap基本使用
4.1 查看版本信息
sqlmap提供了选项--version,可以用来查看版本信息。记忆:version是一个完整的英文单词,中文意思为版本。
4.2 更新sqlmap
sqlmap提供了选项--update,可以将sqlmap更新到最新版本。记忆:update是一个完整的英文单词,中文意思为更新。
4.3 使用INI配置文件
使用sqlmap时,通常会使用常见的组合进行SQL注入探测。为了避免每次都重复输入一长串命令,用户可以将执行的命令保存到INI配置文件中。
sqlmap提供了选项--save,可以将选项保存到INI配置文件中。记忆:save是一个完整的英文单词,中文意思为保存。
使用配置文件,用-c选项
记忆:c是英文单词configurge(配置)的首字母
4.4 设置冗余级别
冗余级别的作用是使输出信息的详细程度有所不同。共有7个冗余级别,即0~6。
0:只显示Python错误及关键的信息。
1:同时显示基本信息和警告信息。
2:同时显示DEBUG信息。
3:同时显示注入的PAYLOAD。
4:同时显示HTTP请求。
5:同时显示HTTP响应头。
6:同时显示HTTP响应页面。
sqlmap的选项-v用来设置冗余级别。如果不进行设置,则默认为1。(v是英文单词verbose(冗长的)的首字母。)
五、指定目标
sqlmap支持多种指定方式:指定单个目标、批量指定目标和基于日志文件指定
5.1 单个目标
sqlmap提供了一个选项-u,用来指定目标的URL地址(记忆:u是URL的首字母)
5.2 多个目标
sqlmap提供了选项-m,可以用来扫描多个目标。需要将目标地址保存在文件中,每一行为一个URL地址。
5.3 使用HTTP请求文件
使用bp抓包后,保存请求文件到文档中,使用-r选项即可,如果目标为HTTPS,还需要使用--force-ssl选项,该选项强制使用SSL/HTTPS
5.4 检测到注入漏洞时报警
选项--alert,用于在检测到新的注入漏洞时执行特定的命令,以加强提示功能。
--alert ‘提示内容’--下图中提示信息写的是‘faxianloudong’
5.5 谷歌搜索语法
可使用的布尔操作符包括AND(+)、NOT(-)和OR(|)
(1)inurl:字符 搜索包含特定字符的URL
(2)intext:字符 搜索网页正文内容中包含指定字符的网页
(3)site:域名 限制只搜索某个域名的页面。例如,site:baidu.com
(4)filetype:扩展名 对目标按照文件类型进行过滤,例如:filetype:txt
(5)intitle:字符 基于网页标题过滤结果
选项-g,用来从谷歌搜索引擎中获取URL地址,默认获取前100个结果并进行SQL注入:
sqlmap -g inurl:login.php?id=
5.6 爬取网站
选项--crawl,用来指定爬取深度,记忆:crawl,中文意思是爬行
输出信息中提示是否检测站点的sitemap.xml文件。sitemap.xml文件保存了网站中的网址以及每个网址的其他元数据。大部分网站都有该文件,但也有一些网站没有。这里输入y,检测sitemap.xml文件,
这是是设置线程数。