Yakit新功能:EditBinary让上传包里的不可见字符可控了"

admin 2026-10-20 17:55:04 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image


以前要在 Yakit 里发出真实的空字节,通常得用 URL 解码类的 Fuzztag 间接构造,比如:


filename=\"shell.php{{urldec(%00)}}.jpg\" // 或者{{null()}}


{{urldec(%00)}} 渲染后才会变成真正的 0x00 字节。但这种方式有几个问题:

  • 要记住 urldec、urldecode 这类 Fuzztag 的写法;
  • 多个特殊字节混在一起时,可读性很差;
  • 没法直观确认最终发出去的字节到底是不是 0x00;
  • 如果还要换行符、图片魔数之类,得组合一堆标签,越写越乱。

最近 Yakit 新分支在 Web Fuzzer 里加了一个 Edit Binary 功能,把这件事直接集成到了编辑器里。这篇文章介绍一下它怎么用,以及为什么上传包改包会因此变简单。

一、Edit Binary 是什么?

当 MITM 数据包中存在二进制流时, MITM 数据包的 body 会变成含有 {{unquote(...)}} 包裹的数据包,而 Edit Binary 就是针对 {{unquote(...)}}、{{hexdecode(...)}}、{{base64decode(...)}} 这类二进制 Fuzztag 的可视化编辑器。

当你在数据包里存在,或者写了这样的标签:


{{unquote(\"shell.php\x00.jpg\")}}


Yakit 会把它渲染成一个小卡片:


Binary[0x736865..13B] Click to modify



它不会被折叠成 Binary 卡片,因为源码里的正则只匹配 \"``...\"(binaryFuzztag.ts:153)。

正确写法:


{{unquote(\"shell.php\x00.jpg\")}}


YAK

2.2 没有长度门槛

unquote / hexdecode / base64decode 是可编辑标签,源码里没有对它们设置长度门槛,无论内容多短都会折叠成卡片。


{{unquote(\"\x00\")}}           ← 1 个字节,也会折叠成 Binary 卡片{{hexdecode(00)}}              ← 1 个字节,也会折叠成 HexString 卡片{{base64decode(AA==)}}         ← 1 个字节,也会折叠成 Base64 卡片


注意语法区别:

  • unquote 的参数是带双引号的字符串:{{unquote(\"\\x00\")}}
  • hexdecode / base64decode 的参数不需要引号:{{hexdecode(00)}}、{{base64decode(AA==)}}

三、Edit Binary 界面长什么样?

弹窗主要分为三块:

区域 内容
顶部 标签信息:Tag: {{unquote(...)}}、Bytes: 13、Head: 0x7368...
中间 Hex 编辑器,十六进制 + ASCII 双栏展示
底部 工具栏:插入 / 替换 模式、HEX / ASCII 输入、输入框、应用 按钮


步骤

1.在 Web Fuzzer 的数据包里写:


Content-Disposition: form-data; name=\"filename\"; filename=\"{{unquote(\"shell.php.jpg\")}}\"


2.点击折叠出来的 Binary[...] 卡片。

3.弹窗里看到 13 个字节,Head: 0x7368...。

4.选中要截断的位置,用 HEX 输入框写 00,点击应用;

  • 或者用鼠标选中某个字节,切换到 替换 模式,用 00 覆盖它。

5.点击 提交,标签自动更新。