安全基础设施:用Fuzztag优雅地生成与变形任何Payload

文章介绍了Yaklang中的Fuzztag,一种全新的、易于使用的模板表达式语言,用于生成和变形字符串。Fuzztag简化了WebFuzzer中的payload生成,支持整数遍历、字符串编码、字典应用和高级嵌套。Fuzztag在Yakit工具中不断发展,提升了自动化测试的效率和灵活性。

安全基础设施:用Fuzztag优雅地生成与变形任何Payload

背景

在 Web Fuzzer 中,我们实现 BurpSuite Intruder 的代替是使用一种名字叫 Fuzztag 的全新机制,这种机制在以前并没有出现在任何安全工具和产品中,因此它对于绝大多数人来说是 “船新” 的。

实际在使用中,Fuzztag 并没有给大家带来太多麻烦的学习成本,其简单的语法和快速交互解决了各种 “配置” 的过程。

但是因为早期版本 Fuzztag 的技术实现比较简单,纯正则编译+分阶段编码有很多的额外限制,造成了不必要的理解成本,我们在 v1.1.3-sp4 以后的版本中,对 Fuzztag 的底层机制进行了完全的重构,使用编译原理的技术实现定制的 Lexer 和 Parser,实现了一套可嵌套递归执行 fuzztag 表达式模版语言。

Yaklang Fuzztag 是什么?

这是一种可以把字符串进行一定规则渲染变形的模版表达式语言,这种语言标记以  { {  开头, }} 结尾,中间包含规则的具体名称和参数,执行的结果为 n 个原字符串的变形。
以 Antlr4 Grammar 风格的语法定义:
expr = data '{ {' identifier ( '(' expr ')' )? '}}' data


简单来说,如果我们想要生成

payload-1 
payload-2 
payload-3 
payload-4 
payload-5


那么,我们仅需要编写的 Fuzztag 表达式为 payload-{ {int(1-5)}}
从字面意思理解,我们这个表达式以 payload- 开头,遇到 { {int(1-5)}} 我们按字面意思理解为,在这儿生成 1-5 这五个整数。因此,他的结果为 [1 2 3 4 5] 我们和 payload- 进行组合,可以得到结果为:

payload-1
payload-2
payload-3
payload-4
payload-5

五分钟学会 Fuzztag

快速开始:使用 Fuzztag 生成整数列表爆破

最简单的情况,如果我们要进行一个参数位置的 ID 遍历,一般来说,我们比如 url 为
https://www.example.com

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值