yakit中的规则详细解释

news2024/11/28 7:45:11

官方文档 序列前置知识之高级配置 | Yak Program Language

本文章多以编写yaml模版的视角来解释

规则一览

匹配器

在编写yaml中会使用到这里两个东西

点击添加会在返回包的右下角出现匹配器

上面有三个过滤器模式,官方解释

  1. 丢弃:丢弃模式会在符合匹配器时下丢弃返回包。

  2. 保留:保留模式会在符合匹配器时保留返回包,剩余的返回包则直接丢弃。

  3. 仅匹配:仅匹配模式会在符合匹配器时将对应的返回包染色,而不做其他操作。

也就是匹配器是只会对返回包做匹配,一般是在做fuzz的情况下,将符合预期返回结果做标记或者染色和丢弃

匹配类型的官方介绍

  1. 关键字:关键字就是在匹配位置中匹配输入的关键字。

  2. 正则表达式:正则表达式就是在匹配位置中匹配输入的正则表达式。

  3. 状态码:(忽略匹配位置)状态码就是匹配响应的状态码,我们只需要填写希望匹配到的状态码即可。

  4. 十六进制:在某些情况下,希望匹配的字符串不是正常可见的ascii码,这时候你就可以使用十六进制这种匹配类型,输入十六进制字符串(例如字符串"302"对应十六进制字符串"333032")。

  5. 表达式:(忽略匹配位置)表达式可以更加灵活地编写我们所希望的匹配规则,它还能与后续要讲的 高级配置:变量 联动。表达式的语法与nuclei-dsl语法兼容,熟悉nuclei工具的师傅可以尝试在表达式中编写一些复杂的匹配规则。一个匹配响应体中是否存在对应字符串的例子如下:contains(body,'302 Found')。附上官方语法手册 https://docs.projectdiscovery.io/templates/reference/helper-functions

使用场景 报错SQL注入

报错注入打印出md5(1)的值,返回的数据包中如果存在0x06d49632c9dc9bcb62aeaef99612ba6b 就代表漏洞存在

 直接添加要匹配的值为0x06d49632c9dc9bcb62aeaef99612ba6b 后点击添加匹配内容,在此场景下匹配响应体,只有一个条件的话上面和下面的条件关系无所谓选择都可以,然后调试执行一下,能匹配到就是成功,然后应用此规则,再将将数据包生成为yaml的raw模版

基本达到了yaml中常用的sqli报错的检测要求

当然还可以继续进行多条件的匹配,比如在精确一点,匹配状态码是200

 

第一个关键字的匹配点击添加条件后就可以进行匹配第二个条件,这里选择状态码,值为200,也可以调试执行一下。

再解释一下,右上角的条件关系为两个不同id对应的匹配的规则的条件,这里是and就代表既要匹配到状态码为200也要匹配到关键字0x06d49632c9dc9bcb62aeaef99612ba6b,而关键字中的条件关系是为了在此匹配条件中多匹配几个

比如我这里修改为or然后 我下面在多添加一个匹配内容为404,意思就是这个条件匹配状态码可以是200也可以是404,都是符合条件的。

 

好了,此时应用我们的匹配器生成yaml看一下效果 

这里在细说一下这里的 matchers-condition: and  意思就是下面两个规则要都为真才匹配到 ,然后就是condition: and 没啥用可以删除了,毕竟这里我们只匹配了一个关键字。 

数据提取器

 

数据提取器顾名思义就是提取数据,比如需要从返回包中提取某个值,提取得到的值再会被用到其他地方,否则提取了数据干嘛是吧

这里有5种提取方式

官方解释

  1. 正则表达式:正则表达式就是在提取位置中提取输入的正则表达式匹配到的内容。我们知道在正则表达式中可以使用小括号来分组,这时候我们可以在匹配正则分组中选择分组,这样就可以提取到想要的内容了。(在正则表达式中,0分组即为正则表达式匹配到的所有内容)

  2. XPath:(提取范围只能是响应体)XPath就是在提取位置中提取输入的XPath匹配到的内容。XPath是一种用于在XML文档中选择节点的语言,我们也可以很轻易地使用浏览器开发工具来复制完整的Xpath。

  3. 键值对:键值对的提取规则稍微有点复杂。键值对会尝试提取所有可能存在的json的key对应的value,以及所有形似key=value中value的值。如果提取位置包含响应头(提取范围为响应头Raw),则他还会尝试提取响应头中的value值。另外还有两个特殊的键值对,分别为protostatus_code,分别对应响应的HTTP协议版本和响应状态码。

  4. JQ(*):(提取范围只能是响应体)jq是一种用于在JSON文档中选择节点的工具,其对应的文档教程在此。

  5. 表达式:(忽略匹配位置)表达式与上面匹配器中的表达式相同,这里不再赘述。

另外提取范围中的raw就是原始响应,可以理解为全部响应的数据包

可以看到官方已近明确的告诉了我们不同的提取类型的提取范围是不同的

正则表达式就不需要我过多了介绍了,只要规则写的好没有匹配不到的

xpath一般用于html之类的返回内容中进行提取,需要先去了解一下xpath的提取规则,写过爬虫的应该都学过

键值对就是key:value的形式,和我们这里的例子刚好相同,这里就演示一下

 设置好后可以先调试执行一下

可以看到会将Type的值提取出来

JQ(*) 是专门用来处理json格式的,在此场景也可以使用

他的格式也比较简单,可以去网上简单的学习一下

 

 

表达式就不说了,还不是很会,可以去看官方的手册 

变量

先解释一下在yakit中的变量是什么,从前面的匹配器我们可以获取到一个值,这个值就是我们能用的变量,当然,不止是提取到的,还有一些其他的变量,比如之前说过的fuzztag。

 

三个模式的官方解释

  1. nuclei:nuclei模式下,其变量值实际上是nuclei的表达式,可以调用绝大部分nuclei-dsl中包含的函数。需要注意的是,当你引用其他变量时,其的值都是string类型,所以可能需要手动进行类型转换。一个简单的例子如下:{{int(a)+3}}

  2. fuzztag:fuzzta模式下,其变量值实际上就是fuzztag,在值中使用fuzztag也会使得Web Fuzzer发送多个请求包。一个简单的例子如下:{{int(1-2)}}

  3. raw:raw模式下,变量值相当于你输入的字符串,不会被解析。

变量可以在后续变量Web Fuzzer序列当前Web Fuzzer中使用。我们可以通过使用fuzztag:{{params(变量名)}}{{p(变量名)}}来使用变量。

比如使用raw

添加一个UA : WindowsOS

在数据包中使用{{p(UA)}}来使用这个变量,实际的传输中发出的是User-Agent: WindowsOS

使用fuzztag

fuzztag函数官方 功能集:fuzztag - 模糊测试标签 | Yak Program Language

比如这里我使用{{int(1-2)}} 意思是生成1和2两个数,可以看到他分别发出了两个包分别是1和2

使用nuclei

nuclei的一些内置函数官方手册 https://docs.projectdiscovery.io/templates/reference/helper-functions

rand_int(1, 10) 随机生成一个数字

同样的方式也可以,右键详情看一下具体的包,随机数是1 

 

如果要写生成yaml模板,这里变量就必须使用nuclei的。

后续的get和post还有其他的就没必要讲了,都是写死的参数可以直接写在数据包中。

 

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

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

相关文章

从0开始学习机器学习--Day14--如何优化神经网络的代价函数

在上一篇文章中,解析了神经网络处理分类问题的过程,类似的,在处理多元分类问题时,神经网络会按照类型分成多个输出层的神经元来表示,如下: 处理4个分类问题时的神经网络 我们可以看到,相较于之…

LINUX下的Myql:库的操作

目录 1.库的创建 2.字符集和校验集 1.查看db1默认的字符集合校验集 2.设置字符集和校验集 3.库的查看 4.数据库的修改 5.数据库的删除 6.数据库的备份 1.库的创建 create database db1; 创建一个名为db1的数据库,LINUX会创建一个名为db1的文件夹。 show data…

Java多线程详解⑤(全程干货!!!)线程安全问题 || 锁 || synchronized

这里是Themberfue 在上一节的最后,我们讨论两个线程同时对一个变量累加所产生的现象 在这一节中,我们将更加详细地解释这个现象背后发生的原因以及该如何解决这样类似的现象 线程安全问题 public class Demo15 {private static int count 0;public …

【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播

1. 效果 2. 场景 css 效果实现:可以看到效果图中就是一个图片从小到大的切换动画效果,这个效果很简单,使用 css 的 transform 的 scale 来实现图片的从小到大的效果,切换就更加简单了,不管是 opacity 还是 visibility 都可以实现图片的隐藏和显示的切换。React.Children.m…

杨辉三角,洗牌算法

杨辉三角 给定一个非负整数numRows&#xff0c;生成杨辉三角的前numRows行。 在杨辉三角中&#xff0c;每个数是它的左上方和右上方的数的和。 public List<List<Integer>> generate(int numRows){List<List<Integer>> ret new ArrayList<>();…

ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic

设计题目&#xff1a;海鲜自助餐厅系统的设计与实现 摘 要 网络技术和计算机技术发展至今&#xff0c;已经拥有了深厚的理论基础&#xff0c;并在现实中进行了充分运用&#xff0c;尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代&#xff0c;所…

ENSP ISOLATE隔离区域

如果用户想进行二层隔离&#xff0c;用户可以将不同的端口加入不同的VLAN&#xff0c;但这样会浪费有限的VLAN资源。采用端口隔离功能&#xff0c;可以实现同一VLAN内端口之间的隔离。用户只需要将端口加入到隔离组中&#xff0c;就可以实现隔离组内端口之间二层数据的隔离。端…

自攻螺钉的世纪演变:探索关键设计与应用

自攻螺钉作为现代工业和建筑中的不可或缺的标准部件&#xff0c;经过了超过100年的发展和创新。从1914年最早的铁螺钉设计到今天的自钻自攻螺钉&#xff0c;自攻螺钉的设计不断优化&#xff0c;以适应更复杂的应用需求。本文将回顾自攻螺钉的演变历程&#xff0c;分析其设计原理…

KTHREAD结构-->ApcState

1. ApcListHead[2] 2. KernelApcInProgress

深入浅出 Spring Boot 与 Shiro:构建安全认证与权限管理框架

一、Shiro框架概念 &#xff08;一&#xff09;Shiro框架概念 1.概念&#xff1a; Shiro是apache旗下一个开源安全框架&#xff0c;它对软件系统中的安全认证相关功能进行了封装&#xff0c;实现了用户身份认证&#xff0c;权限授权、加密、会话管理等功能&#xff0c;组成一…

魅力标签云,奇幻词云图 —— 数据可视化新境界

目录 目的原理详解建议 标签云&#xff1a;用于汇总生成的标签&#xff0c;一般是独立词汇运行前的准备代码示例 词云&#xff1a;对本文中出现频率较高的词&#xff0c;视觉上突出显示总结 目的 掌握文本与文档可视化&#xff1a;使用特定软件或编程语言&#xff08;如Python…

正则表达式在Kotlin中的应用:提取图片链接

在现代的Web开发中&#xff0c;经常需要从网页内容中提取特定的数据&#xff0c;例如图片链接。Kotlin作为一种现代的编程语言&#xff0c;提供了强大的网络请求和文本处理能力。本文将介绍如何使用Kotlin结合正则表达式来提取网页中的图片链接。 正则表达式基础 正则表达式是…

鉴源实验室·加密技术在汽车系统中的应用

随着汽车技术的快速发展&#xff0c;现代汽车已经不再是简单的交通工具&#xff0c;而是融合了多种智能功能的移动终端。无论是自动驾驶、车联网&#xff08;V2X&#xff09;&#xff0c;还是车内娱乐系统&#xff0c;数据传输和存储已经成为汽车生态系统中的关键环节。然而&am…

UE5.1 控制台设置帧率

仅个人记录&#xff0c;未经过严格验证。 也可通过控制台命令蓝图节点&#xff0c;在运行时执行 锁帧&#xff1a; 0->120帧 1-》60帧

SpringCloud Sentinel 服务治理详解

雪崩问题 微服务调用链路中的某个服务故障&#xff0c;引起整个链路中的所有微服务都不可用&#xff0c;这就是雪崩。 雪崩问题产生的原因&#xff1a; 微服务相互调用&#xff0c;服务提供者出现故障或阻塞。服务调用者没有做好异常处理&#xff0c;导致自身故障。调用链中的…

前端基础-html-注册界面

&#xff08;200粉啦&#xff0c;感谢大家的关注~ 一起加油吧~&#xff09; 浅浅分享下作业&#xff0c;大佬轻喷~ 网页最终效果&#xff1a; 详细代码&#xff1a; ​ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"…

《TCP/IP网络编程》学习笔记 | Chapter 4:基于TCP的服务器端/客户端(2)

《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;2&#xff09; 《TCP/IP网络编程》学习笔记 | Chapter 4&#xff1a;基于TCP的服务器端/客户端&#xff08;2&#xff09;回声客户端的完美实现回声客户端的问题回声客户端问题的解决方…

使用 FFmpeg 进行音视频转换的相关命令行参数解释

FFmpeg 是一个强大的多媒体框架&#xff0c;能够解码、编码、转码、录制、播放以及流化几乎所有类型的音频和视频。它广泛应用于音视频处理任务中&#xff0c;包括格式转换、剪辑、合并、水印添加等。本文中简鹿办公将介绍如何使用 FFmpeg 进行一些常见的音视频转换任务。 安装…

ctfshow(316)--XSS漏洞--反射性XSS

Web316 进入界面&#xff1a; 审计 显示是关于反射性XSS的题目。 思路 首先想到利用XSS平台解题&#xff0c;看其他师傅的wp提示flag是在cookie中。 当前页面的cookie是flagyou%20are%20not%20admin%20no%20flag。 但是这里我使用XSS平台&#xff0c;显示的cookie还是这样…

从0开始学习Linux——网络配置

往期目录&#xff1a; 从0开始学习Linux——简介&安装 从0开始学习Linux——搭建属于自己的Linux虚拟机 从0开始学习Linux——文本编辑器 从0开始学习Linux——Yum工具 从0开始学习Linux——远程连接工具 从0开始学习Linux——文件目录 上一个教程中&#xff0c;我们了解了…