yakit中的规则详细解释

官方文档 序列前置知识之高级配置 | 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.mzph.cn/pingmian/59553.shtml

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

相关文章

算法每日双题精讲——双指针(移动零,复写零)

🌟快来参与讨论💬,点赞👍、收藏⭐、分享📤,共创活力社区。 🌟 别再犹豫了!快来订阅我们的算法每日双题精讲专栏,一起踏上算法学习的精彩之旅吧!💪…

【SpringCloud】Kafka消息中间件

Kafka Kafka消息中间件对比:kafka介绍安装教程:配置以及启动顺序: Kafka整合微服务初级入门测试: Kafka整合SpringBoot①导入spring-kafka依赖信息②消息生产者③消息消费者Postman测试 Kafka 消息中间件对比: 消息中…

ViT模型复现项目实战

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

16通道AD采集方案,基于复旦微ARM + FPGA国产SoC处理器平台

测试数据汇总 表 1 本文带来的是基于复旦微FMQL20S400M四核ARM Cortex-A7(PS端) + FPGA可编程逻辑资源(PL端)异构多核SoC处理器设计的全国产工业评估板的AD采集案例。本次案例演示的开发环境如下: Windows开发环境:Windows 7 64bit、Windows 10 64bit PL端开发环境:P…

【Python爬虫实战】DrissionPage 与 ChromiumPage:高效网页自动化与数据抓取的双利器

🌈个人主页:易辰君-CSDN博客 🔥 系列专栏:https://blog.csdn.net/2401_86688088/category_12797772.html ​ 目录 前言 一、DrissionPage简介 (一)特点 (二)安装 (三…

R7:糖尿病预测模型优化探索

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、实验目的: 探索本案例是否还有进一步优化的空间 二、实验环境: 语言环境:python 3.8编译器:Jupyter notebo…

HANDLINK ISS-7000v2 网关 login_handler.cgi 未授权RCE漏洞复现

0x01 产品简介 瀚霖科技股份有限公司ISS-7000 v2网络网关服务器是台高性能的网关,提供各类酒店网络认证计费的完整解决方案。由于智慧手机与平板电脑日渐普及,人们工作之时开始使用随身携带的设备,因此无线网络也成为网络使用者基本服务的项目。ISS-7000 v2可登录300至1000…

RK3576 LINUX RKNN SDK 测试

安装Conda工具 安装 Miniforge Conda wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh chmod 777 Miniforge3-Linux-x86_64.sh bash Miniforge3-Linux-x86_64.shsource ~/miniforge3/bin/activate # Miniforge 安装的…

深入学习指针(5)!!!!!!!!!!!!!!!

文章目录 1.回调函数是什么?2.qsort使用举例2.1使用qsort函数排序整形数据2.2使用sqort排序结构数据 3.qsort函数的模拟实现 1.回调函数是什么? 回调函数就是⼀个通过函数指针调⽤的函数。 如果你把函数的指针(地址)作为参数传递…

天锐绿盾加密软件与Ping32数据安全防护对比,为企业提供坚实的保障

在当今信息化时代,数据安全已成为企业不可忽视的重要议题。天锐绿盾加密软件与Ping32作为两款备受关注的数据安全解决方案,各自以其卓越的功能和优势,为企业数据安全提供了坚实的保障。 Ping32,同样以其出色的数据加密和防泄密功能…

支持向量机相关证明 解的稀疏性

主要涉及拉格朗日乘子法,对偶问题求解

求职经验分享

更多详情:爱米的前端小笔记,更多前端内容,等你来看!这些都是利用下班时间整理的,整理不易,大家多多👍💛➕🤔哦!你们的支持才是我不断更新的动力!找…

基于Dpabi和spm12的脑脊液(csf)分割和提取笔记

一、前言 脑脊液(csf)一直被认为与新陈代谢有重要关联,其为许多神经科学研究提供重要价值,从fMRI图像中提取脑脊液信号可用于多种神经系统疾病的诊断。特别是自2019年Science上那篇著名的csf-BOLD文章发表后,大家都试图…

力扣:94--中序遍历二叉树

树 – 二叉树 完全二叉树: 完全二叉树可以用数组完美匹配位置(先序存储:根左右), 推论一 : 位置为k的节点,左孩子:2*k 1 ,右孩子 : 2 * (k 1&…

SQL 常用语句

目录 我的测试环境 学习文档 进入数据库 基础通关测验 语句-- 查 展示数据库; 进入某个数据库; 展示表: 展示某个表 desc 查询整个表: 查询特定列: 范围查询 等于特定值 不等于 介于 特定字符查询 Li…

MySQL utf8mb3 和 utf8mb4引发的问题

问题描述 Cause: java.sql.SQLException: Incorrect string value: \xF4\x8F\xBB\xBF-b... for column sddd_aaa_ark at row 1 sddd_aaa_ark 存储中文字符时,出现上述问题 原因分析 sddd_aaa_ark在数据库中结构是 utf8字符的最大字节数是3 byte,但是某些…

ONLYOFFICE 文档8.2更新评测:PDF 协作编辑、性能优化及更多新功能体验

文章目录 🍀引言🍀ONLYOFFICE 产品简介🍀功能与特点🍀体验与测评ONLYOFFICE 8.2🍀邀请用户使用🍀 ONLYOFFICE 项目介绍🍀总结 🍀引言 在日常办公软件的选择中,WPS 和微软…

SAP-ABAP开发-ONLINE 程序、DIALOG屏幕开发

目录 一、Online 程序概览 1、程序类型 2、Online程序的主要对象 二、界面 1、SAP的屏幕开发 2、屏幕功能实现 3、界面中的事件块(Event Block) 4、界面的创建 三、简单界面元素 1、文本/输入框控件 2、数据检查 3、一些常用的关键字 四、复…

java、excel表格合并、指定单元格查找、合并文件夹

#创作灵感# 公司需求 记录工作内容 后端:JAVA、Solon、easyExcel、FastJson2 前端:vue2.js、js、HTML 模式1:合并文件夹 * 现有很多文件夹 想合并全部全部的文件夹的文件到一个文件夹内 * 每个部门发布的表格 合并全部的表格为方便操作 模…

平替谷歌翻译--沉浸式翻译

这款插件真特么的猛啊!!! 谷歌插件或者油猴插件都有。 沉浸式翻译 - 免费双语对照网页翻译插件