【问题标题】:jwt.io Base-64 Encoded Flag on Non-Base-64 Encoded Secret Works Unexpectedlyjwt.io Base-64 Encoded Flag on Non-Base-64 Encoded Secret 意外工作
【发布时间】:2021-01-03 10:59:40
【问题描述】:

我正在尝试验证 JWT 令牌上的签名。为此,我将我的秘密粘贴到 jwt.io,然后粘贴我的令牌,然后检查页面底部的签名验证指示器。最终验证签名的是我的非编码秘密,并检查了 base 64 编码的秘密标志。

我的秘密是 ABC123_abC123-Abc123-abC 的形式——它包含非法的 base 64 字符,显然不是 base 64 编码,但 jwt.io 似乎不同意?这是什么原因?

【问题讨论】:

  • 所以您首先粘贴了秘密(“base64 编码秘密”未检查,然后是令牌,未验证,然后检查“base64 编码秘密”并得到验证?当您更改任何内容时粘贴令牌后的右侧,将重新计算签名,然后自动验证。jwt.io 上的 base64 解码器显然非常宽容,会消耗你提供的任何内容,而忽略不可转换的字符。
  • 我在检查 base 64 编码框后重新粘贴了我的令牌以进行验证,我希望可以打开和关闭此行为。有时我觉得它很有帮助,但更多时候我宁愿它不那样工作。

标签: jwt base64


【解决方案1】:

似乎在 jwt.io 的后台正在进行一些 base 64 更正,我通过这个工具 https://base64.guru/tools/repair 泄露了我的秘密,其结果似乎符合我的目的。

'_'被'/'替换,'-'被'+'替换,并且'='被添加到末尾以填充到适当的长度。

【讨论】:

  • 你在最后一句中描述的只是 bas64url 到 base64 的转换。除此之外,jwt.io 也会忽略错误的字符。如果您将“!”§$”添加为“base64 编码密码”,您将获得与使用空密码相同的结果。
猜你喜欢
  • 2011-04-03
  • 1970-01-01
  • 2015-08-09
  • 2014-11-30
  • 2018-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多