1、基本知识
介绍
sqlmap是一款命令行界面开源的渗透测试工具(自动化sql注入),sqlmap可以自动化地侦测和实施SQL注入攻击以及渗透数据库服务器。sqlmap配有强大的侦测引擎,适用于高级渗透测试用户,不仅可以获得不同数据库的指纹信息,还可以从数据库中提取数据,此外还能够处理潜在的文件系统以及通过数据连接执行系统命令。
windows下安装:
先安装python环境,再将sqlmap解压到python文件夹中,新建sqlmap.bat,写入cmd.exe(在这个目录下打开cmd)
sqlmap采用五种独特的SQL注入技术,分别是:
0)基于布尔bool的盲注,即可以根据返回页面判断条件真假的注入
1)基于时间time的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟
2)语句是否执行(即页面返回时间是否增加)来判断
3)基于报错error注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中
4)联合查询union注入,可以使用union的情况下的注入
5)堆查询注入,可以同时执行多条语句的执行时的注入
2、三种请求类型的注入探测
GET方式的SQL注入检测 :sqlmap.py -u "URL"
POST方式的SQL注入检测:sqlmap.py -u "URL" --data "post数据"
Cookie方式的SQL注入检测:sqlmap.py -u "URL" --cookie “cookie数据”
3、获取数据库相关信息
1)获取数据库的数据库类型以及版本
四种常见数据库类型:Microsoft SQL Server、Mysql、Orcle、PostgreSQL
直接使用注入方式的检测语法即可
各类的数据库结构(Microsoft Access只有一个库)
2)获取当前网站所使用的数据库名和用户名
获取当前数据库名 :使用参数 --current-db
获取用户名:使用参数--current-user
4、获取数据量和用户权限
获取数据库的数据量: --count -D “当前使用的数据库名”
用户权限:参数--privileges可以查看用户权限
(microsoft sql server最高权限用户名:sa mysql最高权限用户名:root)
5、MySQL数据库注入
MySQL数据库结构
1)了解数据库结构
2)顺推下去
6、管理自己的数据库
数据库如何随时去连接
先下载pymysql,解压,cmd切换目录,setup.py install,用语句sqlmap.py -d “mysql://用户名:密码@地址:端口/数据库”
连接上后用--sql-shell进行sql执行管理
7、延时注入的魅力
延时注入的使用情况
进行延时注入:使用参数--delay加数字值 或者 -safe-freq
8、交互式命令执行和写webshell
什么是交互式:操作人员和系统(注入点网站)的交互 (注入点的用户权限必须为最高权限)
sqlmap进行命令执行(提权):
一个参数简单搞定:--os-cmd=“命令”(注意在使用交互式参数时要知道网站的绝对路径,绝对路径是从盘符开始的)使用参数后一直回车即可,当我们执行的时候sqlmap会默认生成一个文件,执行完指定命令后会自动删除。
写webshell:使用参数--os-shell,直接回车,自动生成的文件关闭sqlmap后就会自动删除。
9、Tamper脚本的介绍和使用
what is tamper:sqlmap目录下的tamper目录,目录里面的脚本都有不同的功能来帮助我们使用sqlmap进行高级的sql注入测试,如:绕过waf。
小试tamper脚本:测试一个注入漏洞时,常规的方法不行(and判断),用大小写绕过(大小写绕过手工麻烦),用tamper脚本!!!语法:--tampe=“脚本名字”。
所有Tamper脚本的用法!!!
10、本地写入webshell
什么是本地写入:本地是在你自己的电脑上,别人是访问不到的;而远程是在你自己的网站上,别人也可以访问的到。
本地写入webshell:首先你需要一个文件,在sqlmap目录下新建一个目录(mst),在目录(mst)下创建自己想要上传文件(如:mst.txt);其次你需要两个参数(注入点也是必须需要最高权限):--file-write "./mst/mst.txt"(本地文件的地址)、--file-dest "d:/www/1.html"(目标文件的地址)。
11、批量检测注入漏洞
批量:在sqlmap中很多链接批量检测sql注入
批量检测的方法:一个语法 -m “路径”
结合burpsuit进行批量:首先要配置burpsuit下记录所有的request记录,并保存在指定文件夹。其次执行命令:sqlmap.py -l burp.log --batch -smart ,即可对burp.log中保存的所有request进行注入扫描(batch:会自动选择yes,smart启发式快速判断节约时间)。
一些小语法:探测等级 --level=(1-5) #要执行的测试水平等级,默认为1
风险等级 --risk=(0-3) #测试执行的风险等级,默认为1
12、sqlmap学习注入技术
了解sqlmap目录结构:
xml目录可以学到注入技术:里面有一个payloads(都是sqlmap注入检测的载荷文件)
除了可以通过载荷文件去学习sqlmap注入之外,还可以通过一个小参数:-v 数字
还可通过抓包学习:一个参数 --proxy=http://ip:post(这里的代理服务器就是burpsuit相对应监听的)