Mobile wallpaper 1Mobile wallpaper 2Mobile wallpaper 3Mobile wallpaper 4Mobile wallpaper 5
698 字
3 分钟
CTFHUB-skilltree-JWT

CTFHUB-skilltree-JWT#

声明#

  1. 本文为CTFHUB平台技能树WEB进阶模块部分习题解题记录,用于个人学习总结和原理分享,所用jwt网站地址为’https://www.json.cn/jwt’,c-jwt-cracker下载连接为’https://github.com/brendan-rius/c-jwt-cracker’

JWT简介#

Json Web Token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准(RFC 7519。 该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景,是目前最流行的跨域认证解决方案。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接被用于认证,也可被加密。 以上引用自CTFHUB对于JWT的简介题,原理简易阅读文章’https://www.wolai.com/ctfhub/hcFRbVUSwDUD1UTrPJbkob’

T1 无签名#

  1. 阅读题目,提示本题解决方案为将alg字段置为none,后端将不进行签名校验。 Question
  2. 登入admin+随便一个密码,提示只有认证为admin才能查看flag,在此页面刷新抓包,对于token分段进行base64url解码(burp即可)。 de
  3. 修改为如图,分别进行base64url编码,这里不需要第三部分,因为签名算法已经设置为none。 en
  4. 发包拿到flag。 flag

T2 弱密钥#

  1. 题目提示,存在对称加密算法密钥强度较弱被破解出密钥的可能。 Question
  2. 同样的,我们登入后抓一个包放到Repeater。 re
  3. 将c-jwt-craker工具下载到kali,并且执行make指令编译,再按照如图粘贴token,进行破解。 craker
  4. 进入jwt破解网站,修改role:admin以及对称密钥,将编码后的token复制下来。 Question
  5. 重置发包,获得flag。 Question

T3 修改签名算法#

  1. 题目提示为当获得公钥时可以将JWT头部加密算法修改,以修改为对称加密达成攻击目的。 Question
  2. login页面源代码暴露了漏洞,下面这段代码使得用户可以修改签名算法(如HS256),从而用户使用页面提供的公钥作为HAMC密钥伪造token,验证为admin。
$header = JWTHelper::getHeader($token); // 从token读取 alg
$algs = array_merge(array($header->alg, $alg)); // 用户可控的算法
return JWT::decode($token, $key, $algs); // 使用用户指定的算法验证

code 3. 将该页面的公钥保存到本地。 pem 4. 写一个代码用于将公钥的.pem文件加工为token,由于存在换行等情况,用在线网站加密出的token可能有误,或者可以参考其它加工程序,生成token替换数据包内容。 en 5. 重制发包获得flag。 flag

CTFHUB-skilltree-JWT
http://124.70.202.140/posts/post-22/22/
作者
Ne+N3k_O
发布于
2026-04-08
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时