yaklang 中的各种 fuzztag 标签及其用法

发布于:2025-06-09 ⋅ 阅读:(20) ⋅ 点赞:(0)

yaklang 提供了丰富的 fuzztag 标签系统,用于在模糊测试中生成各种类型的测试数据。以下是常见的 fuzztag 标签分类和详细说明。

更多资料可参考官方文档:

https://www.yaklang.com/products/manual/expert-mode/Web%20Fuzzer/Fuzz-case/

https://yaklang.com/docs/newforyak/fuzztag/

https://www.yaklang.com/products/expert-mode/Web%20Fuzzer/Fuzz-tags/

数字生成类标签

int 标签

int 标签是最基础的数字生成标签,支持多种语法:

  • {{int(1-100)}} - 生成 1 到 100 的整数
  • {{int(0-9999|4)}} - 生成 0000-9999 的四位数字
  • {{int(1,2,3,4,5)}} - 生成指定的整数列表
  • {{int(1-10|4|2)}} - 生成 1-10 范围,填充为 4 位,步长为 2

别名:portportsintegeri

字符生成类标签

char 标签

char 标签用于生成字符范围:

  • {{char(a-z)}} - 生成小写字母 a 到 z
  • {{char(A-Z)}} - 生成大写字母 A 到 Z
  • {{char(0-9)}} - 生成数字字符 0 到 9

别名:cch

编码解码类标签

Base64 编码标签

  • {{base64enc(abc)}} - 进行 base64 编码,结果为 YWJj
  • 别名:base64encodebase64ebase64b64

URL 编码标签

  • {{urlescape(abc=)}} - URL 编码特殊字符,结果为 abc%3d
  • {{urlenc(abc)}} - URL 强制编码,结果为 %61%62%63
  • {{urldec(%61%62%63)}} - URL 解码,结果为 abc

双重 URL 编码

  • {{doubleurlenc(abc)}} - 双重 URL 编码,结果为 %2561%2562%2563
  • {{doubleurldec(%2561%2562%2563)}} - 双重 URL 解码

HTML 编码

  • {{htmlenc(abc)}} - HTML 实体编码
  • {{htmldec(abc)}} - HTML 实体解码

Unicode 编码

  • {{unicode:encode(abc)}} - Unicode 编码
  • {{unicode:decode(abc)}} - Unicode 解码
  • 别名:unicodeunicode:encunicode:dec

压缩编码类标签

Gzip 压缩

  • {{gzip:encode(abc)}} - Gzip 压缩编码
  • {{gzip:decode(data)}} - Gzip 解压解码
  • 别名:gzip:encgzipcgzipgzip:decgzipdecgzipd

Zlib 压缩

  • {{zlib:encode(abc)}} - Zlib 压缩编码
  • {{zlib:decode(data)}} - Zlib 解压解码
  • 别名:zlib:enczlibczlibzlib:deczlibdeczlibd

字符串处理类标签

大小写转换

  • {{lower(Abc)}} - 转换为小写,结果为 abc
  • {{upper(abc)}} - 转换为大写,结果为 ABC

随机大小写

  • {{randomupper(abc)}} - 随机大小写,如 aBc
  • 别名:random:upperrandom:lower

字符串重复

  • {{repeatstr(abc|3)}} - 重复字符串 3 次,结果为 abcabcabc
  • 别名:repeat:str

字符串截取

  • {{substr(abcdef|2)}} - 从位置 2 开始截取
  • {{substr(abcdef|2,3)}} - 从位置 2 开始截取 3 个字符

去除空格和引号

  • {{trim( abc )}} - 去除两边空格
  • {{unquote("abc")}} - 去除引号
  • {{quote(abc)}} - 添加引号

数组和列表类标签

数组生成

  • {{array(1,2,3)}} - 生成数组 [1,2,3]
  • {{array:auto(a,b,c)}} - 自动分割生成数组
  • 别名:listlist:auto

模糊测试专用标签

用户名模糊测试

  • {{fuzz:username(admin)}} - 根据给定用户名生成更多测试用户名
  • {{fuzz:username(admin|2)}} - 指定模糊等级为 2
  • 别名:fuzz:user

密码模糊测试

  • {{fuzz:password(password)}} - 根据给定密码生成更多测试密码
  • {{fuzz:password(password|3)}} - 指定模糊等级为 3
  • 别名:fuzz:pass

文件操作类标签

文件读取

  • {{file(/tmp/1.txt)}} - 读取文件内容
  • {{file(/tmp/1.txt|/tmp/2.txt)}} - 读取多个文件内容

按行读取文件

  • {{file:line(/tmp/test.txt)}} - 按行读取文件内容
  • 别名:filelinefile:lines

文件夹读取

  • {{file:dir(/tmp/test)}} - 读取文件夹中所有文件内容
  • 别名:filedir

插件调用类标签

Codec 插件调用

  • {{codec(name|params)}} - 调用 Yakit Codec 插件
  • {{codec:line(name|params)}} - 调用插件并按行解析结果

安全测试类标签

Java 序列化攻击载荷

  • {{yso:exec(whoami)}} - 生成 Java 反序列化命令执行载荷

JsonPath 操作

  • {{jsonpath({"key":"value"}|$.key)}} - 通过 JsonPath 查找值
  • {{jsonpath({"key":"value"}|$.key|newvalue)}} - 通过 JsonPath 替换值

随机生成类标签

随机字符串生成

根据代码中的模式,yaklang 还支持随机字符串生成:

  • {{randstr(10)}} - 生成长度为 10 的随机字符串
  • {{randstr(1,30)}} - 生成长度为 1-30 的随机字符串
  • {{randstr(1,30,10)}} - 生成 10 个长度为 1-30 的随机字符串

时间日期类标签

yaklang 还提供了丰富的时间日期相关的 fuzztag,用于生成各种时间格式的测试数据。

使用建议

  1. 组合使用:可以将多个 fuzztag 组合使用,如 {{base64enc({{int(1-100)}})}}
  2. 参数分隔:使用 | 分隔参数,使用 , 分隔列表项
  3. 别名使用:大多数标签都有简短的别名,可以提高编写效率
  4. 上下文相关:在 HTTP 请求中使用时,注意编码格式的兼容性

总结

这些 fuzztag 标签构成了 yaklang 强大的模糊测试能力。每个标签都经过精心设计,支持多种参数组合,能够满足各种安全测试场景的需求。通过合理使用这些 fuzztag,您可以快速生成大量有针对性的测试数据,提高安全测试的效率和覆盖率。