当前位置: 首页 > article >正文

JWT-混淆算法

jwt - RS256(RSA + SHA-256)

题目来源:DownUnderCTF2021 Web jwt

外国的比赛,找不到线上的环境了,github中有Docker,拖下来用docker生成一个本地环境

原题wp链接:

https://ctftime.org/writeup/30541

github链接:

https://github.com/DownUnderCTF/Challenges_2021_Public

jwt参考链接:

https://web-sec.gitbook.io/wsa/advanced/jwt/algorithm-confusion

在这里插入图片描述

每次访问jwt数据都会变化,通过工具根据两个不同的令牌 生成一个可能的公钥(这说的不太准确,)

rsa_sign2n工具通过已知的令牌生成公钥

注意这个written to后面的文件名 -> 公钥文件

在这里插入图片描述

通过生成的公钥依次尝试 利用工具 推出私钥**(只有当上面的公钥是弱公钥时才有可能)**

RsaCTFtool

用这个工具将公钥 -> 私钥

python3 RsaCtfTool.py --publickey ./public.key --private

在这里插入图片描述

成功生成私钥

通过私钥修改jwt验证数据, 将admin:false -> admin:true

import jwt

private_key = open('./private').read()
#print(private_key)
token = jwt.encode({'admin':True}, private_key, algorithm='RS256')
print(token)

curl -X POST -d "jwt=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6dHJ1ZX0.B5wl51qvk-wOKN8JwAWiZ2U27lr_aHoTCPIbkEfVup4h_pdeMjXtbEMZvThns1aFWZN3ENscia3JwoTRu7alhmsSRL6QLuMmn6iSSsx2ZbOKQLenwWSfxOWjDymjk20moA" http://127.0.0.1:1337/get_flag

然后请求/get_flag路由用POST方法发送正确的jwt数据即可

在这里插入图片描述

总结

  • 生成有不同的jwt数据 -> 通过工具生成公钥 -> 尝试弱公钥生成私钥 -> 私钥可以生成jwt数据

http://www.kler.cn/a/378831.html

相关文章:

  • Docker可视化管理面板DPanel的安装
  • 【系统架构设计师】2024年上半年真题论文: 论云上自动化运维级其应用(包括解题思路和素材)
  • openEuler 系统中 Samba 文件共享服务器管理(windows、linux文件共享操作方法)
  • Ant Design Pro 框架 - fieldProps 的使用
  • Python小白学习教程从入门到入坑------第二十三课 封装(语法进阶)
  • 海睿思产品体系二次开发能力介绍
  • 鸿蒙HarmonyOS应用开发者(基础+高级)认证
  • uniapp下载文件的方案,包括H5,App方案解决办法
  • 如何使用Python WebDriver爬取ChatGPT内容(完整教程)
  • 数据结构,问题 C: 后缀表达式
  • Java NIO 【处理消息边界】
  • 基于 Spring Boot 和 Vue 的大学生入伍管理创新系统
  • CSS中display和visibility的区别
  • pnpm install安装element-plus的版本跟package.json指定的版本不一样
  • Hive SQL 和 SQL 的区别总结(持续更新中.....)
  • UV紫外相机
  • 在 C/C++ 之中为什么应该建议使用C函数库定义的基础数值类型,而不是编译默认的关键字类型?
  • Javase——正则表达式
  • C#开发webService接口
  • aws(学习笔记第九课) 使用AWS的网络存储EBS
  • Git 概述及相关命令(1)
  • 【小白学机器学习28】 统计学脉络+ 总体+ 随机抽样方法
  • 【Git】Git 版本控制与协作开发指南
  • 在VSCode中读取Markdown文件
  • 【linux-Day7】Vim的使用和简单配置
  • 前端技术月刊-2024.11