Yakit工具篇:WebFuzzer模块之序列操作

简介

Web Fuzzer 序列就是将多个 Web Fuzzer 节点串联起来,实现更复杂的逻辑与功能。例如我们需要先进行登录,然后再进行其他操作,这时候我们就可以使用 Web Fuzzer 序列功能。或者是我们在一次渗透测试中需要好几个步骤才能验证是否有漏洞这种场景。
像这种如果使用burp来操作这种需要好几个步骤这种场景,往往很难实现。在Yakit里面实现起来相对来说就比较容易了。接下来我们一起来看看在文件上传的时候,我们怎么利用序列来完成上传并验证的。

前置知识

在使用序列之前需要我们了解几个高级配置:匹配器,数据提取器,变量。

匹配器

在这里插入图片描述

我们先看一共有三种匹配模式:丢弃,保留,仅匹配。这三个模式很好理解:

  1. 丢弃:丢弃模式会在符合匹配器时下丢弃返回包。
  2. 保留:保留模式会在符合匹配器时保留返回包,剩余的返回包则直接丢弃。
  3. 仅匹配:仅匹配模式会在符合匹配器时将对应的返回包染色,而不做其他操作。
    在匹配模式的旁边,有一个红色的圈,这里实际上是颜色按钮,用于设置在仅匹配模式下的染色颜色。
    在这里插入图片描述

再往右看,有两个二选一按钮:AND和OR。这两个按钮用于设置多个数据提取器的匹配逻辑,AND表示所有匹配器的条件都需要匹配,OR表示只需要有其中一个条件匹配即可。

接下来我们来讲解一下如何添加匹配器,我们点击下方的添加按钮或者图中右上角的添加/调试按钮,就可以添加匹配器了。
在这里插入图片描述

匹配器给我们提供了多种匹配类型与匹配位置,方便我们编写复杂的匹配器。

首先我们来介绍匹配类型:

  1. 关键字:关键字就是在匹配位置中匹配输入的关键字。
  2. 正则表达式:正则表达式就是在匹配位置中匹配输入的正则表达式。
  3. 状态码:(忽略匹配位置)状态码就是匹配响应的状态码,我们只需要填写希望匹配到的状态码即可。
  4. 十六进制:在某些情况下,希望匹配的字符串不是正常可见的ascii码,这时候你就可以使用十六进制这种匹配类型,输入十六进制字符串(例如字符串"302"对应十六进制字符串"333032")。
  5. 表达式:(忽略匹配位置)表达式可以更加灵活地编写我们所希望的匹配规则,它还能与后续要讲的 高级配置:变量 联动。表达式的语法与nuclei-dsl语法兼容,熟悉nuclei工具的师傅可以尝试在表达式中编写一些复杂的匹配规则。

然后我们再来介绍匹配位置,我们以下面这个响应包为例:

HTTP/1.1 302 Found
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Location: https://www.baidu.com/
Content-Length: 154<html><body>302 Found</body></html>
  1. 状态码:匹配范围仅有状态码。
  2. 响应头:匹配范围包含响应的第一行(在例子是HTTP/1.1 302 Found)以及响应头。
  3. 响应体:匹配范围包含响应正文(在例子里是302 Found)。
  4. 全部响应:匹配范围即整个响应包。

数据提取器

在这里插入图片描述
数据提取器的功能是将响应包中的某些数据提取出来。
在这里插入图片描述

数据提取器同样给我们提供了多种提取类型与提取位置,方便我们编写复杂的数据提取器。我们可以看到在数据提取器的左上角(data_0)旁边存在一个编写按钮,这是用于修改提取器的名字,这个名字可以在后续变量和Web Fuzzer序列中使用。
首先我们来介绍提取类型:

  1. 正则表达式:正则表达式就是在提取位置中提取输入的正则表达式匹配到的内容。我们知道在正则表达式中可以使用小括号来分组,这时候我们可以在匹配正则分组中选择分组,这样就可以提取到想要的内容了。(在正则表达式中,0分组即为正则表达式匹配到的所有内容)
  2. XPath:(提取范围只能是响应体)XPath就是在提取位置中提取输入的XPath匹配到的内容。XPath是一种用于在XML文档中选择节点的语言,我们也可以很轻易地使用浏览器开发工具来复制完整的Xpath。
  3. 键值对:键值对的提取规则稍微有点复杂。键值对会尝试提取所有可能存在的json的key对应的value,以及所有形似key=value中value的值。如果提取位置包含响应头(提取范围为响应头或Raw),则他还会尝试提取响应头中的value值。另外还有两个特殊的键值对,分别为proto,status_code,分别对应响应的HTTP协议版本和响应状态码。
  4. JQ(*):(提取范围只能是响应体)jq是一种用于在JSON文档中选择节点的工具,其对应的文档教程在此。
  5. 表达式:(忽略匹配位置)表达式与上面匹配器中的表达式相同,这里不再赘述。

变量

在这里插入图片描述
我们提到数据提取器的名字可以在变量中使用,实际上就相当于我们赋值了一个变量。同样地,我们也可以直接在变量这个地方上直接赋值变量。
在上图中,我们可以设置变量名和变量值,变量可以在后续变量,Web Fuzzer序列和当前Web Fuzzer中使用。我们可以通过使用fuzztag:{{params(变量名)}}或{{p(变量名)}}来使用变量。

变量同样存在三种模式:nuclei,fuzztag,raw。

  1. nuclei:nuclei模式下,其变量值实际上是nuclei的表达式,可以调用绝大部分nuclei-dsl中包含的函数。需要注意的是,当你引用其他变量时,其的值都是string类型,所以可能需要手动进行类型转换。一个简单的例子如下:{{int(a)+3}}。
  2. fuzztag:fuzzta模式下,其变量值实际上就是fuzztag,在值中使用fuzztag也会使得Web Fuzzer发送多个请求包。一个简单的例子如下:{{int(1-2)}}。
  3. raw:raw模式下,变量值相当于你输入的字符串,不会被解析。

文件上传漏洞的上传与校验序列操作

这个地方利用uploadlabs的第一关来进行演示。
第一关主要是前端校验,所以我们将上传的数据包进行抓包,然后修改文件后缀即可。
在这里插入图片描述
将对应的上传文件的请求,发送到webfuzzer,WF-[1],并且创建数据提取器:path
在这里插入图片描述

然后在将校验是否上传成功的请求发送到webfuzzer,WF-[3],并设置变量:
在这里插入图片描述

这个地方特别注意:

在WF-[1]中设置了数据提取器,名字为path, 这个path最终获取到的是图片路径, 这个图片路径签名有个../
所以我们需要将这个../去掉
那么就在WF-[3]中去设置了一个变量:fixpath, 值为{{trim_left(path, '../')}}
trim_left:是内置的nuclei函数
path:是WF-[1]的数据提取器的名字,设置序列之后会自动继承过来

然后设置序列:
在这里插入图片描述
在序列中的WF会默认继承上个WF的cookie和变量:
在这里插入图片描述

点击开始执行:
在这里插入图片描述
会发现先之下step0再执行step1.
并且最终的结果123也出来了,这个123是shell.php文件中输出的内容。
序列操作就介绍到这里吧,有不清楚的可以看看官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/135726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用mod_rewrite时常用的服务器变量: RewriteRule规则表达式的说明:

使用mod_rewrite时常用的服务器变量&#xff1a; HTTP headers:HTTP_USER_AGENT, HTTP_REFERER, HTTP_COOKIE, HTTP_HOST, HTTP_ACCEPT connection & request: REMOTE_ADDR, QUERY_STRING server internals: DOCUMENT_ROOT, SERVER_PORT, SERVER_PROTOCOL system stuff: TI…

vue中实现千位分隔符

vue中实现千位分隔符有两种&#xff0c;一种是某一个字段转换&#xff0c;一种是表格table中的整列字段转换 比如将3236634.12&#xff0c;经过转换后变为 3,236,634.12 1. 某一个字段转换 写js方法&#xff1a; export function numberExchange(value){if (!value) return…

高压放大器在铁电测试中的用途有哪些

高压放大器在铁电测试中有多种重要用途。铁电材料是指具有自发极化的晶体材料&#xff0c;具有一系列特殊的电学和物理性质。铁电测试是研究铁电材料性质的关键实验手段之一。下面安泰电子将介绍高压放大器在铁电测试中的几个主要用途。 极化场施加&#xff1a;铁电材料的最显著…

ARM---CAN2.0B读取 汽车BMS报文

Qt CAN编程1- CAN总线整体介绍 - 简书 STM32---CAN2.0B读取新能源汽车BMS报文-CSDN博客 CAN通信标准帧和扩展帧介绍_can扩展帧-CSDN博客 【精选】详解CAN 2.0协议_can2.0-CSDN博客 QT实现CAN通信_五个板栗的技术博客_51CTO博客 linux CAN通讯基于Qt代码编写_pf_can-CSDN博客…

【Mac开发环境搭建】安装HomeBrew、HomeBrew安装Docker、Docker安装Mysql5.7和8

文章目录 HomeBrew安装相关命令安装包卸载包查询可用的包更新所有包更新指定包查看已经安装的包查看包的信息清理包查看brew的版本更新brew获取brew的帮助信息 Brew安装DockerDocker常用命令镜像相关查看已经拉取的所有镜像删除镜像 容器相关停止运行容器启动容器重启容器删除容…

【第2章 Node.js基础】2.2 Node.js回调函数

学习目标 &#xff08;1&#xff09;理解Node.js的回调函数&#xff1b; &#xff08;2&#xff09;掌握回调函数的使用。 什么是回调函数 回调函数是一种特殊的函数&#xff0c;它作为参数传递给另一个函数&#xff0c;并在特定的事件或条件发生时被调用。回调函数通常用于异…

快手直播弹幕websocket protobuf序列化与反序列化

系列文章目录 websocket训练地址:https://www.qiulianmao.com,正在搭建中 基础-websocket逆向基础-http拦截基础-websocket拦截基础-base64编码与解码基础-python实现protobuf序列化与反序列化基础-前端js实现protobuf序列化与反序列化基础-protobufjs实现protobuf序列化与反…

一行命令让你的服务器命令行亮起来!!!!

if [ "$(whoami)" "root" ]; then echo "PS1${debian_chroot:($debian_chroot)}\[\033[01;32m\]\u\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]# " >> /root/.bashrc; source /root/.bashrc; echo "已为root用户设置提示符以#结尾…

vue2 集成 - 超图 - SuperMap iClient3D for WebGL 及常用方法

文章目录 1:下载SuperMap iClient3D for WebGL2:格式化项目中所用的依赖包3:vue2 项目引入4:vue2 页面使用常见方法4.1 创建三维场景,引入在线地图资源,定位到指定位置4.2 坐标拾取4.3 用户输入事件4.4 拾取实体4.5 实体改变监听事件4.6 双击全屏4.7 相机移动事件4.8 添加…

kotlin 基本语法

const val INFO "ZZZ is Success Result" fun main(){ var name: String? "zzz" name null name?.capitalize() //?问号的意思是如果name是null ,后面的方法不执行&#xff0c;如果name不是null&#xff0c;后面方法执行 var name: String? &q…

内网可达网段探测netspy- Mac环境

netspy是一款快速探测内网可达网段工具 当我们进入内网后想要扩大战果&#xff0c;那我们可能首先想知道当前主机能通哪些内网段。 netspy正是一款应用而生的小工具&#xff0c;体积较小&#xff0c;速度极快&#xff0c;支持跨平台&#xff0c;支持多种协议探测&#xff0c;…

GNU ld链接器 lang_process()(二)

一、ldemul_create_output_section_statements() 位于lang_process()中11行 。 该函数用于创建与目标有关的输出段的语句。这些语句将用于描述输出段的属性和分配。 void ldemul_create_output_section_statements (void) {if (ld_emulation->create_output_section_sta…

Netty心跳检测

文章目录 一、网络连接假死现象二、服务器端的空闲检测三、客户端的心跳报文 客户端的心跳检测对于任何长连接的应用来说&#xff0c;都是一个非常基础的功能。要理解心跳的重要性&#xff0c;首先需要从网络连接假死的现象说起。 一、网络连接假死现象 什么是连接假死呢&…

外贸网站优化常用流程和一些常识

外贸网站google排名&#xff0c;总以为是单个网页标签的优化过程。 显然&#xff0c;这些观点都是错误的,九凌网络是做谷歌优化服务&#xff0c;九凌网络跟大家分享外贸网站Google优化常用流程和一些常识需要做以下几个步骤&#xff1a; 第一步&#xff1a;网站诊断&#xff0…

OpenHarmony 4.0 Release 编译异常处理

一、环境配置 编译环境&#xff1a;Ubuntu 20.04 OpenHarmony 软件版本&#xff1a;4.0 Release 设备平台&#xff1a;rk3568 二、下拉代码 参考官网步骤&#xff1a; OpenHarmony 4.0 Release 源码获取 repo init -u https://gitee.com/openharmony/manifest -b OpenHarmo…

接口测试 Mock 实战(二) | 结合 jq 完成批量化的手工 Mock

因为本章的内容是使用jq工具配合完成&#xff0c;因此在开始部分会先花一定的篇幅介绍jq机器使用&#xff0c;如果读者已经熟悉jq&#xff0c;可以直接跳过这部分。 先来看应用场景&#xff0c;App 经常会有一些信息展示的列表页&#xff0c;比如商家的菜品、股票的公司、文章的…

uni-app:js实现数组中的相关处理-数组复制

一、slice方法-浅拷贝 使用分析 创建一个原数组的浅拷贝&#xff0c;对新数组的修改不会影响到原数组slice() 方法创建了一个原数组的浅拷贝&#xff0c;这意味着新数组和原数组中的对象引用是相同的。因此&#xff0c;当你修改新数组中的对象时&#xff0c;原数组中相应位置的…

【网络】UDP协议

UDP协议 一、传输层1、再谈端口号2、两个命令 二、UDP协议1、UDP协议格式2、UDP的解包和分用3、UDP的特点4、UDP使用注意事项5、基于UDP的应用层协议 一、传输层 我们以前在学习HTTP等应用层协议时&#xff0c;为了便于理解&#xff0c;简单的认为HTTP协议是将请求和响应直接发…

如何使用 NFTScan NFT API 在 Arbitrum 网络上开发 Web3 应用

Arbitrum 是以太坊的 Layer 2 扩容方案&#xff0c;为以太坊面临的高 gas 费和网络拥堵问题&#xff0c;提供了一个解决方案。作为 Layer 1 的以太坊基础层受每秒只能验算 15 笔交易的限制&#xff0c;在目前以太坊使用需求庞大的情况下&#xff0c;局限了以太坊的可扩展性。Ar…

安全防御——四、防火墙理论知识

安全防御 一、防火墙1、防火墙是如何诞生的2、防火墙如何分类2.1 软件型防火墙2.1.1 个人防火墙2.1.2 网关型防火墙 3、硬件型防火墙4、防火墙的技术类型5、代理服务器什么是代理 6、防火墙的接口模式7、防火墙抵御的攻击7.1 DDoS攻击7.2 单包攻击7.3 用户行为不受控7.4 威胁安…