CTFHub:第八十三关——JSON Web Token——无签名
原创
君陌社区
君陌社区
君陌社区渗透安全笔记
2026年7月12日 20:00
江苏
在小说阅读器读本章
去阅读
CTFHub网址:【https://www.ctfhub.com/#/index】
登录账号
点击技能树
选择“web进阶- JSON Web Token-无签名”开启题目
题目描述: 一些JWT库也支持none算法,即不使用签名算法。当alg字段为空时,后端将不执行签名验证。尝试找到 flag
漏洞原理: JWT支持none算法,当Header中指定alg为none时,服务器会跳过签名校验,攻击者因此可篡改Payload内容并置空签名,从而伪造任意身份(如管理员)登录。
单击打开链接进入靶场实战练习环境,页面为一个登陆界面
输入用户名admin和随机的密码之后登录,页面显示“Hello admin(guest), only admin can get flag.”意思是只有管理员才能得到flag数据
重新登陆并用Yakit工具截获数据包,服务器的response包含token值,其中Header中明文数据为{\"typ\":\"JWT\",\"alg\":\"HS256\"},本关卡为无签名,意味着alg需要设置为none,这代表需要改为{\"typ\":\"JWT\",\"alg\":\"none\"}
下一个数据包中Payload明文内容为{\"username\":\"admin\",\"password\":\"123456\",\"role\":\"guest\"},页面提示只有admin能获取flag,说明role角色应该为admin,这表示应该改为{\"username\":\"admin\",\"password\":\"ljn\",\"role\":\"admin\"}
使用jwt解密网站解析,完整如下所示
{ \"typ\":\"JWT\", \"alg\":\"none\"}
加密为
ewogICJ0eXAiOiAiSldUIiwKICAiYWxnIjogIm5vbmUiCn0=
{ \"username\":\"admin\", \"password\":\"123456\", \"role\":\"admin\"}
加密为
ewogICJ1c2VybmFtZSI6ICJhZG1pbiIsCiAgInBhc3N3b3JkIjogIjEyMzQ1NiIsCiAgInJvbGUiOiAiYWRtaW4iCn0=
由于使用无签名算法,所以Signature为空,将其移除。然后使用.将Header、Payload拼接起来,得到新的JWT token
ewogICJ0eXAiOiAiSldUIiwKICAiYWxnIjogIm5vbmUiCn0=.ewogICJ1c2VybmFtZSI6ICJhZG1pbiIsCiAgInBhc3N3b3JkIjogIjEyMzQ1NiIsCiAgInJvbGUiOiAiYWRtaW4iCn0=.
利用此token构建新的数据包并发送,返回的数据中得到flag数据
上传flag数据完成靶场实战练习
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。











评论