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注入的文章,关注我全部带走吧( •̀ ω •́ )✧

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐