ctf_show笔记篇(web入门---jwt)

目录

jwt简介

web345:

web346:

web347:

web348:

web349:

web350:


jwt简介

JSON Web Token(JWT)通常由三部分组成

  1. Header(头部):包含了两部分信息:令牌的类型(即JWT)以及所使用的签名算法(例如HMAC SHA256或RSA)。
  2. Payload(载荷):也称为Claims。包含了要传输的信息,以及其他元数据。Claims分为三种类型:注册的(registered)、公共的(public)和私有的(private)。注册的Claims包括标准化的Claims(例如:iss(签发者)、exp(到期时间)、sub(主题)等),公共的Claims可以自定义,但建议使用预定义的键,私有的Claims则是用户自定义的键值对。
  3. Signature(签名):使用Base64编码的Header和Payload以及一个秘钥(secret)进行加密生成的签名,用于验证消息的完整性以及确认发送者的身份。

简单地说jwt就是一串字符串,类似于序列化这种,把用户的信息保存在字符串里

JWT全称是JSON Web Token,如果从字面上理解感觉是基于JSON格式用于网络传输的令牌。实际上,JWT是一种紧凑的Claims声明格式,旨在用于空间受限的环境进行传输,常见的场景如HTTP授权请求头参数和URI查询参数。JWT会把Claims转换成JSON格式,而这个JSON内容将会应用为JWS结构的有效载荷或者应用为JWE结构的(加密处理后的)原始字符串,通过消息认证码(Message Authentication Code或者简称MAC)和/或者加密操作对Claims进行数字签名或者完整性保护。


总的来说,JWT其实有两种实现,基于JWE实现的依赖于加解密算法、BASE64URL编码和身份认证等手段提高传输的Claims的被破解难度,而基于JWS的实现使用了BASE64URL编码和数字签名的方式对传输的Claims提供了完整性保护,也就是仅仅保证传输的Claims内容不被篡改,但是会暴露明文。目前主流的JWT框架中大部分都没有实现JWE

web345:

这一题没有理解到是什么意思,抓包得到cookie

这个数据并没有签名,只有头部和载荷

{"alg":"None","typ":"jwt"}[{"iss":"admin","iat":1712019048,"exp":1712026248,"nbf":1712019048,"sub":"user","jti":"1d066a8d6628e359da77edcd6fb2a7ce"}]

alg表示加密方式,这里并没有,正常情况下是hash256的话应该是这样的

查看源代码能看到有admin页面,但是访问以后重定向回了index页面

把刚才那些数据拿到jwt加密解密网站去

将加密数据改为hs256,即可

访问admin获得flag,猜测这里应该就是因为没有签名所以最开始访问不了

web346:

JWT支持把算法设置为无(none),即alg=none的时候签名就会为空,这时候任何token都是有效的,此设定的功能原本是为了方便开发人员调试,如果开发者不严谨,上线服务以后并没有关闭此功能的话,就会造成使用任何伪造的token登录网站。

这里其实可以不用脚本去做,只是最近在博主在练习写脚本的能力

import jwt
import requestsclass Payload(object):def __init__(self, url):self.url = urlself.__jwt_dict = {"iss": "admin","iat": 1712025870,"exp": 1712033070,"nbf": 1712025870,"sub": "admin","jti": "197a8236998a443b7251012ac9e1497e"}self.__jwt_header = {"alg": "none","typ": "JWT"}def encode(self):jwt_token = jwt.encode(self.__jwt_dict,  # 有效载体'',  # 加密密匙algorithm="none",  # 指明签名算法方式, 默认也是HS256headers=self.__jwt_header)cookies = {'auth': jwt_token}return cookiesdef requests(self, jwt_token):re = requests.post(url=self.url, cookies=jwt_token)print(re.text)def main():url = input('请输入url:')a = Payload(url)b = a.encode()a.requests(b)if __name__ == '__main__':main()

web347:

这个环境说是弱口令,尝试admin,123456,这些啊最终确定为123456

修改对称密匙和sub即可

web348:

这一题还是相同的,通过字典爆破私钥

这里我是用的是jwt_gui是一款图形化的简单爆破工具

Releases · Aiyflowers/JWT_GUI (github.com)

web349:

从备份文件来看存在两个文件并且是rs256加密,从这里来看,这两个应该就是公钥和私钥了。

在网上找什么jwt解密呀就有,将公钥和私钥填进去改,user改为admin

然后post传参将修改好的数据post传参上去

这里得随便写点数据不然发不出去

抓包修改即可

web350:

这一题同样有公钥泄露

简单介绍一下

  • 非对称加密使用一对密钥:公钥和私钥。公钥用于加密数据,私钥用于解密数据;私钥用于签名数据,公钥用于验证签名。常见的非对称加密算法包括RSA、DSA(数字签名算法)和ECC(椭圆曲线密码学)等。

这一题利用到了当可以拿到公钥的时候利用修改alg为HS256将数据修改为对称加密,并且因为我们拿到了公钥,通过这些编码以后上传给服务器,服务器也会判断为对称加密,这时就会都用公钥就能成功实现

还是post传入就能实现

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

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

相关文章

蓝桥杯备考3

P8196 [传智杯 #4 决赛] 三元组 题目描述 给定一个长度为 n 的数列 a,对于一个有序整数三元组 (i,j,k),若其满足 1≤i≤j≤k≤n 并且,则我们称这个三元组是「传智的」。 现在请你计算,有多少有序整数三元组是传智的。 输入格式…

LRU的原理与实现(java)

介绍 LRU的英文全称为Least Recently Used,即最近最少使用。它是一种内存数据淘汰算法,当添加想要添加数据而内存不足时,它会优先将最近一段时间内使用最少的数据淘汰掉,再将数据添加进来。 原理 LRU的原理在介绍中就已经基本说…

机器学习模型——逻辑回归

https://blog.csdn.net/qq_41682922/article/details/85013008 https://blog.csdn.net/guoziqing506/article/details/81328402 https://www.cnblogs.com/cymx66688/p/11363163.html 参数详解 逻辑回归的引出: 数据线性可分可以使用线性分类器,如果…

蓝桥真题--路径之谜DFS解法

路径之谜 思路 前置知识:深度搜索模板搜索所有可以找的路径,将走过的靶子减去一走到最后一个格子的时候,直接去判断所有的靶子只有除最后一个位置的靶子,其余靶子都归零的时候,判断一个最后一个位置横坐标和纵坐标的靶…

尚硅谷html5+css3(1)

1.基本标签&#xff1a; <h1>最大的标题字号 <h2>二号标题字号 <p>换行 2.根标签<html> 包括<head>和<body> <html><head><title>title</title><body>body</body></head> </html> 3…

MATLAB - 用命令行设计 MPC 控制器

系列文章目录 前言 本例演示如何通过命令行创建和测试模型预测控制器。 一、定义工厂模型 本示例使用《使用 MPC Designer 设计控制器》中描述的工厂模型。创建工厂的状态空间模型&#xff0c;并设置一些可选的模型属性&#xff0c;如输入、状态和输出变量的名称和单位。 % co…

正确使用@Resource

目录 1 怎么使用Resource&#xff1f;1.0 实验环境1.1 通过字段注入依赖1.2 bean property setter methods &#xff08;setter方法&#xff09; 2 打破岁月静好&#xff08;Resource takes a name attribute&#xff09;2.1 结论2.2 那我不指定呢&#xff1f;【结论&#xff1…

Seata(分布式事务集成测试和总结)

文章目录 1.集成测试1.集成测试正常下单1.步骤2.浏览器访问 http://localhost:10008/order/save?userId666&productId1&nums1&money1003.注意事项和细节 2.集成测试模拟异常1.步骤1.com/sun/springcloud/controller/StorageController.java 休眠12s&#xff0c;模…

自动驾驶执行层 - 线控底盘基础原理(非常详细)

自动驾驶执行层 - 线控底盘基础原理(非常详细) 附赠自动驾驶学习资料和量产经验&#xff1a;链接 1. 前言 1.1 线控的对象 在自动驾驶行业所谓的“感知-定位-决策-执行”的过程中&#xff0c;在末端的执行层&#xff0c;车辆需要自主执行决策层所给出的指令&#xff0c;具体…

leetcode(HOT100)——链表篇

1、相交链表 本题思路就是定义两指针&#xff0c;指向两链表的同一起跑线&#xff0c;然后共同往前走&#xff0c;边走边判断两链表的节点是否相等&#xff0c; 代码如下&#xff1a; /*** Definition for singly-linked list.* public class ListNode {* int val;* L…

Android14应用启动流程(源码+Trace)

1.简介 应用启动过程快的都不需要一秒钟&#xff0c;但这整个过程的执行是比较复杂的&#xff0c;无论是对手机厂商、应用开发来说启动速度也是核心用户体验指标之一&#xff0c;本文采用Android14源码与perfetto工具进行解析。 源码参考地址&#xff1a;Search trace分析工…

2024.4.5|牛客小白月赛90

2024.4.5|牛客小白月赛90 A.小A的文化节 B.小A的游戏 C.小A的数字 D.小A的线段&#xff08;easy version&#xff09; E.小A的任务 F.小A的线段&#xff08;hard version&#xff09; 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c…

[报错解决]源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。

目录 报错信息解决办法 spring整合mvc时&#xff0c;遇到的404报错&#xff0c;梳理mvc知识供参考供 报错信息 解决办法 Controller RequestMapping("user") public class UserController {//spring整合webmvc// 请求地址 http://localhost:7070/user/quickRequest…

数据字典

文章目录 一、需求分析二、表设计&#xff08;两张表&#xff09;三、功能实现3.1 数据字典功能3.1.1 列表功能3.1.2 新增数据字典3.1.3 编辑数据字典 3.2 数据字典明细3.2.1 列表功能3.2.2 新增字典明细3.2.3 编辑字典明细 3.3 客户管理功能3.3.1 列表功能3.3.2 新增用户3.3.3…

Golang | Leetcode Golang题解之第11题盛最多水的容器

题目&#xff1a; 题解&#xff1a; func maxArea(height []int) int {res : 0L : 0R : len(height) - 1for L < R {tmp : math.Min(float64(height[L]), float64(height[R]))res int(math.Max(float64(res), tmp * float64((R - L))))if height[L] < height[R] {L} el…

【环境变量】基本概念理解 | 查看环境变量echo | PATH的应用和修改

目录 前言 基本概念&理解 注意的点 查看环境变量方法 PATH环境变量 PTAH应用系统指令 PTAH应用用户程序 命令行的修改&#xff08;内存级&#xff09; 配置文件的修改 windows环境变量 大家天天开心&#x1f642; bash进程的流程。环境变量在系统指令和用户…

Linux网卡IP地址配置错误的影响

在Linux系统中&#xff0c;网络配置是保持系统顺畅运行的关键一环。正确配置网卡的IP地址对于确保网络通信的准确性和效率至关重要。然而&#xff0c;如果在这个过程中发生错误&#xff0c;可能会带来一系列问题。让我们一起探讨一下&#xff0c;如果Linux网卡的IP地址配置错误…

Python+Yolov8框选位置目标识别人数统计计数

程序示例精选 PythonYolov8框选位置目标识别人数统计计数 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonYolov8框选位置目标识别人数统计计数》编写代码&#xff0c;代码整洁&#…

测开——基础理论面试题整理

1. 测试流程 需求了解分析需求评审制定测试计划【包括测试人员、时间、每人负责的模块、测试的风险项以及预防】编写自动化测试用例 —— 测试评审【尽量丰富测试点】编写测试框架和脚本&#xff08;若是功能测试 可省去这步骤&#xff09;执行测试提交缺陷报告测试分析与评审…

Coursera上托福专项课程02:TOEFL Speaking and Writing Sections Skills Mastery 学习笔记

TOEFL Speaking and Writing Sections Skills Mastery Course Certificate 本文是学习 https://www.coursera.org/learn/toefl-speaking-writing-sections-skills-mastery 这门课的学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。 文章目录 TOEFL Speaking and Writing…