SQLMAP是什么?
SQLMAP是一个开源的自动化SQL注入工具,其主要功能是扫描、发现并利用给定的URL的SQL注入漏洞。
SQLMAP可以对URL干嘛?
判断可注入的参数
判断可以使用哪一种SQL注入技术进行注入
判断识别数据库的类型
根据用户的选择,从数据库中读取数据
SQLMAP支持的注入技术
基于布尔的盲注:根据返回页面判断条件真假的注入。
基于时间的盲注:不能根据页面返回内容判断任何信息,用条件语句查看时间延退语
句是否执行(即页面返回时间是否增加)来判断。
基于报错的注入:页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
基于联合查询的注入:可以使用UNION的情况下的注入。
堆查询注入:同时执行多条语句的注入。
SQLMAP支持的数据库类型
主要包括一些关系型数据库(RMDBS),如MySQL、Oracle、PostgreSQL、Microsoft SQL Server、 Microsoft Access、 IBM DB2、 SQLite、 Firebird、Sybase、SAP MaxDB、Informix、HSQLDB等
SQLMAP检测注入漏洞的流程
网站连通性检测:检测目标的连接状态
WAF探测:检测网站是否受WAF保护。
网页稳定性检测:检测网页是否稳定。
参数动态性检测:检测参数是否具有动态性。
启发式注入检测:探测该参数点是否是动态的、是否为可能的注入点。
SQLMAP的误报检测机制
误报检测:SQLMAP的布尔盲注、时间盲注方式判断注入点时,存在误报的可能。为防止误报SQLMap引入了误报检测机制。两个基础检测算法页面相似度对比技术(在各种注入技术中大量使用):在SQLMap检测的整个过程中,会有一个原始响应的定义,指的是在网站连通性检测的过程中,如果网站成功响应,则把该响应定义为原始响应(包括状态码、HTTP响应头、HTTP响应体)。一个HTTP请求成功响应后,将与原始响应进行对比,得出对比结果,算法输出为True表示当前响应与原始响应相似,算法输出为False表示当前响应与原始响应不相似。高斯分布识别响应机制(在UNION注入和时间盲注过程中使用):网站的响应是基于逻辑的,如果一组请求,网站的处理逻辑相同,那么响应几乎也是相同的。如果某一个响应出现了变化,则可以认为网站处理逻辑变了,这种逻辑的变化可能正是因为注入成功了。
常见参数:
参数:-u 直接输入目标URL
参数:-m 从文件中取出保存的url进行检测
参数:-r 从文本文件中获取http请求
参数:-g 测试注入Google的搜索结果的GET参数
参数:-l 从Burp或者WebScarab代理中获取日志
枚举参数
参数:-b,--banner 列出版本号
参数:--dbs 列出所有数据库的库名
参数:--current-db 列出当前使用的数据库库名
参数:--tables 列出数据库中的表
参数:--columns 列出数据表中的字段
参数:--dump 转储数据库表项,查询字段值
参数:--users 列出所有管理用户
参数:--passwords 列出并破解数据库用户的hash
参数:--privileges 列出数据库管理员权限
请求参数
参数:--method 指定使用的http方法
参数:--data 把数据以POST方式提交
参数:--param-del GET或POST的数据用&以外的其他字符分割
参数:--cookie,--load-cookies,--drop-setcookie 设置cookie
参数:--referer 伪造HTTP中的Referer头
参数:--user-agent 自定义HTTP中的User-Agent头
参数:--headers 增加额外的http头,不同的头使用“\n”分隔
参数:--timeout 设置超时时间
参数:--retries 设置重试次数
检测参数
参数:-V显示等级,共有7个等级,为0时只显示python错误以及严重的信息,为1时(默认)同时显示基本信息和警告信息,为2时同时显示debug信息,为3时同时显示注入的payload,为4时同时显示HTTP请求,为5时同时显示HTTP响应头,为6时同时显示HTTP响应页面。
参数:--risk 风险等级,共有4个等级
参数:-p,--skip 手动用-p参数设置想要测试的参数,-skip设置跳过的参数
参数:--flush-session 清空SQLMAP缓存的会话信息
注入技术参数
参数:--technique 指定sqlmap使用的探测技术,B表示布尔盲注,T表示时间盲注(延退注入),E表示报错注入,U表示联合查询注入,S表示堆查询注入
参数:--time-sec 设定延退注入的时间(默认为5秒)
参数:--union-cols 设定UNION查询字段数
参数:--union-char 设定UNION查询时使用的字符
参数:--second-order 设置二次注入的URL
参数:--tamper 使用sqlmap自带的tamper或者自己写的tamper来混滑payload,通常用来绕过WAF和IPS。
操作系统权限参数
参数:--os-cmd执行操作系统命令
参数:--os-shell交互式的操作系统的shell
文件读写参数
参数:--file-read
读取文件
参数:--file-write
写入文件
参数:--file-dest指明写入文件的绝对路径
常见用法1:-u参数(直接输入目标URL)
sqlmap-uhttp://192.168.0.110/page.phpid=10-currentdb//爆当前库
sqlmap-uhttp://192.168.0.110/pagephpzid=10-D数据库名--tables//爆表名
sqlmap-uhttp://192.168.0.110/page.phpzid=10-D数据库名-T表名columns//爆字段
sqlmap-uhttp://192.168.0.110/page.phpid=10-D数据库名-T表名-C字段名1,字段名2,字段名3..(互相用逗号隔开)-dump//显示数据
常见用法2:-r参数(从文本文件中获取http请求
命令实例:sqimap-r/usr/a.txt
说明:使用该命令时须指明a.txt(保存着http请求包)文件所在的绝对路径
验证过程:与-u参数类似
判断可注入的参数
判断可以用哪种SQL注入技术来注入
识别出所有存在的注入类型
尝试去判定数据库版本、开发语言、操作系统版本
常见用法3:-m参数(从文件中取出保存的url进行检测)
命令实例:sqlmap-m/usr/b.txt
说明:使用该命令时须指明b.txt(保存着多项URL)文件所在的绝对路径
验证过程:与-u参数类似
判断可注入的参数
判断可以用哪种SQL注入技术来注入
识别出所有存在的注入类型
尝试去判定数据库版本、开发语言、操作系统版本
sqlmap官网 点我下载
先把python 下载安装 ,再下载sqlmap
再把aqlmap扔到目录里解压
桌面建立cmd的快捷方式
打开其属性并修改起始位置为sqlmap目录
快捷方式重命名为sqlmap
打开后键入sqlmap.py
出现剑插猪脖提示,表明开启成功。
使用帮助:
python sqlmap.py -h
Java搭建靶场环境
SQL注入 ——sql数据库操作基础(一)_Gjqhs的博客-CSDN博客
SQL注入——SQLmap的进阶使用(十三)_Gjqhs的博客-CSDN博客
...
更多包括而不限于SQL注入的文章,关注我全部带走吧( •̀ ω •́ )✧