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
别名:port、ports、integer、i
字符生成类标签
char 标签
char 标签用于生成字符范围:
{{char(a-z)}}- 生成小写字母 a 到 z{{char(A-Z)}}- 生成大写字母 A 到 Z{{char(0-9)}}- 生成数字字符 0 到 9
别名:c、ch
编码解码类标签
Base64 编码标签
{{base64enc(abc)}}- 进行 base64 编码,结果为 YWJj- 别名:
base64encode、base64e、base64、b64
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 解码- 别名:
unicode、unicode:enc、unicode:dec
压缩编码类标签
Gzip 压缩
{{gzip:encode(abc)}}- Gzip 压缩编码{{gzip:decode(data)}}- Gzip 解压解码- 别名:
gzip:enc、gzipc、gzip、gzip:dec、gzipdec、gzipd
Zlib 压缩
{{zlib:encode(abc)}}- Zlib 压缩编码{{zlib:decode(data)}}- Zlib 解压解码- 别名:
zlib:enc、zlibc、zlib、zlib:dec、zlibdec、zlibd
字符串处理类标签
大小写转换
{{lower(Abc)}}- 转换为小写,结果为 abc{{upper(abc)}}- 转换为大写,结果为 ABC
随机大小写
{{randomupper(abc)}}- 随机大小写,如 aBc- 别名:
random:upper、random: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)}}- 自动分割生成数组- 别名:
list、list: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)}}- 按行读取文件内容- 别名:
fileline、file: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,用于生成各种时间格式的测试数据。
使用建议
- 组合使用:可以将多个 fuzztag 组合使用,如
{{base64enc({{int(1-100)}})}} - 参数分隔:使用
|分隔参数,使用,分隔列表项 - 别名使用:大多数标签都有简短的别名,可以提高编写效率
- 上下文相关:在 HTTP 请求中使用时,注意编码格式的兼容性
总结
这些 fuzztag 标签构成了 yaklang 强大的模糊测试能力。每个标签都经过精心设计,支持多种参数组合,能够满足各种安全测试场景的需求。通过合理使用这些 fuzztag,您可以快速生成大量有针对性的测试数据,提高安全测试的效率和覆盖率。