利用basee64特性 -- BYUCTF 2025 JWTF
题目信息: Unfortunately one of our JWTs was compromised by attackers, so we created a JWT Revocation List to ensure they can’t use it anymore.
代码量很少
# 导入必要的模块
# 从 flask 模块导入 Flask, request, redirect, make_response, jsonify 类和函数
from flask import Flask, request, redirect, make_response, jsonify
# 导入 jwt 模块用于处理 JSON Web Token,导入 os 模块用于与操作系统进行交互
import jwt, os# 初始化 Flask 应用
app = Flask(__name__)
# 从 flag.txt 文件中读取内容并赋值给 FLAG 变量
FLAG = open('flag.txt', 'r').read()
# 生成一个 32 字节的随机字节串,并将其转换为十六进制字符串作为应用的密钥
APP_SECRET = os.urandom(32).hex()
# 生成一个 32 字节的随机字节串,并将其转换为十六进制字符串作为管理员的密钥
ADMIN_SECRET = os.urandom(32).hex()
# 打印管理员密钥,方便调试
print(f'ADMIN_SECRET: {ADMIN_SECRET}')# JRL - JWT 吊销列表,用于存储需要吊销的 JWT 令牌
jrl = [# 编码一个包含管理员权限和用户 ID 的 JWT 令牌并添加到吊销列表中jwt.encode({"admin": True, "uid": '1337'}, APP_SECRET, algorithm="HS256")
]# 定义根路由,处理 GET 请求
@app.route('/', methods=['GET'])
def main():# 创建一个响应对象,内容为 'Hello World!'resp = make_response('Hello World!')# 设置一个名为 'session' 的 cookie,值为一个包含非管理员权限的 JWT 令牌resp.set_cookie('session', jwt.encode({"admin": False}, APP_SECRET, algorithm="HS256"))return resp# 定义 /get_admin_cookie 路由,处理 GET 请求,用于在知道管理员密钥时获取管理员 cookie
@app.route('/get_admin_cookie', methods=['GET'])
def get_admin_cookie():# 从请求参数中获取管理员密钥secret = request.args.get('adminsecret', None)# 从请求参数中获取用户 IDuid = request.args.get('uid', None)# 如果管理员密钥、用户 ID 为空或者用户 ID 为 '1337',则重定向到根路由if secret is None or uid is None or uid == '1337':return redirect('/')# 如果管理员密钥与预设的管理员密钥相等if secret == ADMIN_SECRET:# 创建一个响应对象,内容为 'Cookie has been set.'resp = make_response('Cookie has been set.')# 设置一个名为 'session' 的 cookie,值为一个包含管理员权限和用户 ID 的 JWT 令牌resp.set_cookie('session', jwt.encode({"admin": True, "uid": uid}, APP_SECRET, algorithm="HS256"))return resp# 定义 /flag 路由,处理 GET 请求,用于在用户为管理员时获取标志信息
@app.route('/flag', methods=['GET'])
def flag():# 从请求的 cookie 中获取名为 'session' 的值,并去除首尾空格和等号session = request.cookies.get('session', None).strip().replace('=','')# 如果 session 为空,则重定向到根路由if session is None:return redirect('/')# 检查 session 是否在 JWT 吊销列表中,如果在则重定向到根路由if session in jrl:return redirect('/')try:# 尝试解码 session 中的 JWT 令牌payload = jwt.decode(session, APP_SECRET, algorithms=["HS256"])# 如果解码后的令牌中 admin 字段为 True,则返回标志信息if payload['admin'] == True:return FLAGelse:# 否则重定向到根路由return redirect('/')except:# 解码失败则重定向到根路由return redirect('/')# 定义 /jrl 路由,处理 GET 请求,用于获取 JWT 吊销列表
@app.route('/jrl', methods=['GET'])
def jrl_endpoint():# 将 JWT 吊销列表以 JSON 格式返回return jsonify(jrl)# 如果该脚本作为主程序运行,则启动 Flask 应用
if __name__ == "__main__":app.run(host='0.0.0.0', port=1337, threaded=True)
我们先尝试获取被吊销的JWT
["eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhZG1pbiI6dHJ1ZSwidWlkIjoiMTMzNyJ9.NPRE_IxezKiALwrpSQkHy2DxuJEXmHblTYtvGUo-1Gw"]
JWT(JSON Web Token)由三个部分组成
- 头部(Header)
- 载荷(Payload)
- 签名(Signature)
每部分使用 Base64 编码,并由句点 .
分隔,形成如下格式:
Header.Payload.Signature
签名部分是
NPRE_IxezKiALwrpSQkHy2DxuJEXmHblTYtvGUo-1Gw
其解码后hex为
34 f4 44 23 17 b3 2a 20 0b c2 ba 52 42 41 f2 d8 3c 6e 24 45 e6 1d b9 53 62 db c6 52 8d 46
但是我们无论如何修改最后一位base64,其结果均相同
NPRE_IxezKiALwrpSQkHy2DxuJEXmHblTYtvGUo-1Gx
NPRE_IxezKiALwrpSQkHy2DxuJEXmHblTYtvGUo-1Ga
相关文章:
利用basee64特性 -- BYUCTF 2025 JWTF
题目信息: Unfortunately one of our JWTs was compromised by attackers, so we created a JWT Revocation List to ensure they can’t use it anymore. 代码量很少 # 导入必要的模块 # 从 flask 模块导入 Flask, request, redirect, make_response, jsonify 类和函数 from f…...
湖北理元理律师事务所:科学债务规划如何平衡还款与生活
在债务压力普遍加剧的背景下,如何通过专业规划实现“还款不停生活”,成为许多债务人关注的核心问题。湖北理元理律师事务所基于多年实务经验,总结出一套兼顾法律合规性与人性化需求的债务管理方案,其核心逻辑在于通过法律工具优化…...
1.1HarmonyOS NEXT技术架构深度解析:微内核架构与系统分层
HarmonyOS NEXT技术架构深度解析:微内核架构与系统分层 摘要 作为面向万物互联时代的全场景操作系统,HarmonyOS NEXT通过革命性的星核架构(Star Kernel)重构了系统底层架构。本文将深入解析HarmonyOS NEXT的微内核设计原理、系统…...
考研系列-408真题计算机组成原理篇(2015-2019)
写在前面 此文章是本人在备考过程中408真题计算机组成原理部分(2015年-2019年)的易错题及相应的知识点整理,后期复习也常常用到,对于知识提炼归纳理解起到了很大的作用,分享出来希望帮助到大家~ # 2015年 1.IO端口 接口电路中可以被CPU直接访问的寄存器 IO控制方式-中断…...
HarmonyOS Next 关键资产的解释
关键资产的安全存储与管理:HarmonyOS Asset Store Kit 深度解析 一、关键资产的定义与重要性 关键资产(Critical Asset)是指应用运行过程中涉及的短敏感数据,包括但不限于用户密码、身份令牌(Token)、银行…...
Awesome ChatGPT Prompts:释放AI对话潜力的开源利器
项目概览 Awesome ChatGPT Prompts 是由土耳其开发者 Fatih Kadir Akın 发起的开源项目,托管于 GitHub,旨在通过精心设计的提示词模板(Prompts)优化用户与 ChatGPT 的交互体验。项目以 Markdown 和 CSV 格式管理模板,无需复杂编程语言,但需文本处理能力,目前已在 GitH…...
第6章 C控制语句:循环
目录 6.1 再探while 循环6.2 while语句6.3 比较大小:使用关系运算符和表达式6.4 不确定的循环与计数循环6.5 for循环6.6 更多赋值运算符:、-、*、/和%6.7 逗号运算符6.8 退出条件循环:do while6.9 选择哪种循环6.10 嵌套循环6.11 数组6.12 使…...
海盗王客户端更换横版任务面板的实现
海盗王的任务面板,采用的是竖长设计,上半部分显示任务列表,下半部分显示任务详情。 这样的设计会带来一个问题:就是任务多的时候,不能完整显示,只能显示前面几个,后面的会隐藏到滚动条里面&…...
【git】在Windows上搭建git服务器
1、简述 常用的搭建git服务器的工具有:Gogs、Gitblit、Gitea、GitLab 它们的区别如下: 功能GogsGitblitGiteaGitLab界面语言中文、英文等多语言英文为主中文、英文等多语言英文为主权限管理基础分支权限详细分支权限基础 详细分支权限非常完善代码审查…...
leetcode hot100刷题日记——6.和为 K 的子数组
解答:前缀和思想,见灵茶山艾府大大题解。 (1)前缀和思想: 前缀和数组prefix_sum的定义是prefix_sum[i] nums[0] nums[1] … nums[i]。如果存在两个前缀和prefix_sum[j]和prefix_sum[i]满足prefix_sum[i] - prefi…...
人工智能的“歧视”:“她数据”在算法运行中隐形
纵观人类的发展史,每一次科技进步都将对性别平等产生深刻影响。尤其是当下,人们对于借助人工智能技术快速发展来弥合性别不平等寄予厚望。 但很多人没想过,人工智能技术本身是客观中立、不存在“算法歧视”“性别偏见的吗? 弗吉…...
Java数组列表 - ArrayList
在Java中,ArrayList是一种非常实用的数据结构,它允许开发者动态地管理数组大小。通过ArrayList,可以轻松地添加、删除和修改元素,以及获取元素和列表的大小。例如,创建一个ArrayList来存储字符串,然后通过a…...
跨境外贸电商供应链一体化ERP管理系统
项目介绍: 跨境外贸电商供应链一体化ERP管理系统 高清视频演示: 跨境外贸电商供应链一体化ERP管理系统_哔哩哔哩_bilibili 系统说明: 外贸电商产品ERP系统包含多个角色(客户、客服、工厂、供应商)和多个功能模块,以下是系统功能的详细说明…...
数据库表连接结构详解
数据库表连接结构详解 介绍 本文基于提供的SQL表结构,解释了表之间的连接关系。这些表主要涉及AI系统配置,如客户端、顾问和智能体等。通过外键(如client_id、agent_id),这些表形成关联网络。 表连接概述 以下是主…...
Vue3.0教程005:watch监视ref定义的【基本类型】数据和【对象类型】数据
文章目录 4、watch监视4.1 前言4.2 情况一4.3 情况二 4、watch监视 4.1 前言 作用:监视数据的变化(和vue2中的watch作用一致)特点:Vue3中的watch只能监视以下四种数据: ref定义的数据。reactive定义的数据。函数返回…...
【Java的批量操作】
系列文章目录 Java知识点 文章目录 系列文章目录👉前言👉一、常见批量操作方法👉1-1、JDBC 批量操作(数据库)👉1-2、MyBatis 批量操作👉1-3、Java 8 Stream 批量处理集合👉1-4、多线…...
流复备机断档处理
文章目录 环境症状问题原因解决方案 环境 系统平台:UOS(海光),UOS (飞腾),UOS(鲲鹏),UOS(龙芯),UOS (申威),银河麒麟svs(X86_64&…...
PostgreSQL架构
目录 一、PostgreSQL核心特性与优势 1.PostgreSQL简介 2.PostgreSQL的核心特点 (1)开源与自由 (2)高度符合SQL标准 (3)丰富的数据类型 (4)事务与并发控制 (5&…...
苍穹外卖系统结构与功能报告
一、系统简介 苍穹外卖系统是为餐饮企业定制的数字化解决方案,包含管理端后台和用户端小程序两部分。管理端面向餐饮企业员工,支持菜品、套餐、订单等核心业务的数字化管理;用户端面向消费者,提供在线点餐、支付、订单跟踪等功能…...
CAU数据库class3 关系型数据库基础
关系数据库模型的3个要素 数据结构 二维表 数据操作 特点 操作的对象为元组,操作的结果为元组高度非过程化,用户不关系是怎么实现的 完整性约束 数据完整性是指保证数据真确的特性 实体完整性参照完整性用户定义完整性 关系的形式定义 例子&…...
【Qt】在OrinNX上,使用命令安装qtmultimedia5-dev时报错
1、问题描述 在OrinNX+Ubuntu20.04上,使用命令安装qtmultimedia5-dev时报错 sudo apt install qtmultimedia5-devThe following packages have unmet dependencies: qtmultimedia5-dev : Depends: libpulse-dev but it is not going to be installed E: Unable to correct p…...
阿里云CDN刷新预热--刷新URL
文章目录 一、全英文URL刷新预热二、掺杂中文的URL刷新预热2.1 对带中文URL进行编码2.2 预热刷新 三、CDN刷新-核心作用与价值3.1 核心作用3.2 核心价值3.3 典型使用场景 *最后我想说:请你不要相信我说的每一句话,这只是我的个人经验* 一、全英文URL刷新…...
anaconda、miniconda、conda的关系及miniconda安装
anaconda、miniconda、conda的关系及miniconda安装 文章目录 前言正文定义关系Linux安装miniconda新建一个python3.8环境 参考 前言 本文用于记录关于Anaconda、conda和Miniconda的定义及其关系的总结123: 正文 定义 conda 一个跨平台的开源包管理和环境管理工具…...
SpringBoot实现本地对象存储【minio、阿里云、七牛云】
引入依赖 <!-- minio --> <dependency><groupId>io.minio</groupId><artifactId>minio</artifactId><version>8.5.12</version> </dependency><!-- 阿里云oss --> <dependency><groupId>com.aliyun.…...
阿里云百炼(1) : 阿里云百炼应用问答_回答图片问题_方案1_提问时上传图片文件
直接用于拍照答题不大理想, 可能适用其他用途, 更好的方案: 阿里云百炼(1) : 阿里云百炼应用问答_回答图片问题_方案2_提取题目再提问-CSDN博客 1.实现代码 package cn.nordrassil.ly.test.拍照答题;import com.alibaba.dashscope.app.Application; import com.alibaba.dashsc…...
理解阿里云的MQTT
一、阿里云的mqtt分几种 阿里云提供的MQTT服务主要分为标准MQTT协议和P2P模式MQTT两种类型,二者在通信模式及适用场景上有显著差异: 1、标准MQTT与P2P MQTT的区别 特性标准MQTTP2P模式MQTT通信模式发布/订阅(Pub/S…...
HarmonyOS5云服务技术分享--云缓存快速上手指南
大家好,今天我们来聊聊如何快速上手华为AppGallery Connect(AGC)的云缓存服务。作为一款基于Serverless架构的Key-Value型缓存服务,它不仅能自动弹性伸缩,还能免去运维烦恼,非常适合高并发场景下的数据快速…...
FreeSWITCH rtcp-mux 测试
rtcp 跟 rtp 占用同一个端口,这就是 rtcp 复用 Fs 呼出是这样的: originate [rtcp_muxtrue][rtcp_audio_interval_msec5000]user/1001 &echo 需要同时指定 rtcp_audio_interval_msec,否则 rtcp_mux 不能生效 Fs 呼入不需要配置…...
浏览器播放 WebRTC 视频流
源码(vue) <template><video ref"videoElement" class"video" autoplay muted playsinline></video> </template><script setup lang"ts">import { onBeforeUnmount, onMounted, ref } fr…...
SpringBoot3+Vue3(1)-后端 请求头校验,jwt退出登录,mybaits实现数据库用户校验
1.后端:jwt请求头校验 解析 工具类jwtUtils 解析token 令牌是否过期,验证 正常、异常、运行时错误 倒入工具类是resource 工具类中添加解析用户的方法: 在 在工具类添加id解析 此处调用 添加controller做测试 测试&…...
Oracle RAC 中的 RBAL 进程
Oracle RAC 中的 RBAL 进程 RBAL 进程概述 RBAL(ReBalancer)是 Oracle RAC 和 ASM(Automatic Storage Management)环境中的一个关键后台进程,主要负责 ASM 磁盘组的重新平衡操作。 主要功能 磁盘组监控:…...
mac上将 Excel 文件的扩展名从 .xls 改为 .xlsx 后,打开时报错:“文件格式或文件扩展名无效”。
方法一:使用 Excel for Mac 打开并另存为 打开 Excel 应用程序。 打开你的 .xls 文件: 如果 Excel 能正常打开它,说明文件没问题。 在菜单栏点击:文件 → 另存为。 在文件格式中选择:Excel 工作簿 (.xlsx)。 点击保存…...
【算法-栈】深入栈模拟题:从题型特征到实现技巧
算法相关知识点可以通过点击以下链接进行学习一起加油!双指针滑动窗口二分查找前缀和位运算模拟链表哈希表字符串模拟 在算法学习中,栈是最基础也是最容易上手的数据结构之一。然而,当它被用于模拟复杂操作流程时,却常常成为区分“…...
OK536N-C测评:开箱体验以及在Linux下如何管理开发板
前言 OK536N-C终于到我手上了,因为我的主要领域是做嵌入式音视频。例如相机类产品,录像类产品,直播类产品都是我所涉及到的。本片文章一起来开箱见证下OK536N-C有哪些魅力,据说很强。 对于一个嵌入式领域的开发者来说࿰…...
【强化学习】深度强化学习 - Deep Q-Network(DQN)算法
文章目录 摘要一、DQN核心原理1. Q-learning回顾2. 用深度网络逼近Q函数3. 经验回放(Experience Replay)4. 目标网络(Target Network)5. 损失函数6. ε-贪心策略(ε-greedy) 二、算法流程与伪代码三、典型实…...
Python实例题:PyOt实现简易浏览器
目录 Python实例题 题目 代码实现 功能说明 基本浏览功能: 标签页支持: 用户界面: 使用方法 注意事项 Python实例题 题目 PyOt实现简易浏览器 代码实现 import sys from PyQt5.QtWidgets import (QApplication, QMainWindow, QT…...
MinerU可视化界面程序部署(Windows环境)
前提是要安装好MinerU,才能部署可视化程序(这个可视化程序的源码是MinerU自带的),安装MinerU的步骤参考: MinerU安装(pdf转markdown、json)-CSDN博客 下面进行可视化界面的部署操作(在Windows环境部署&…...
STM32之定时器(TIMER)与脉冲宽度调制(PWM)
一、STM32定时器的原理与应用 基本概念 定时器的作用一般是为了使用定时功能和中断功能(洗衣机、微波炉、电风扇、智能空调......),当然在STM32中也可以利用定时器产生周期性的脉冲信号来控制不同的外设(电机的转速、舵机的角度…...
Linux jq 命令使用详解
简介 jq 是一个命令行 JSON 处理器,允许解析、过滤、转换和格式化 JSON 数据,提取特定字段或重构 JSON,高效使用 JSON 中的 API 或配置文件。 安装 Debian/Ubuntu sudo apt install jqCentOS/RHEL sudo yum install jq或sudo dnf insta…...
【25软考网工】第七章 (2)UOS Linux文件和目录管理、用户和组管理
博客主页:christine-rr-CSDN博客 专栏主页:软考中级网络工程师笔记 大家好,我是christine-rr !目前《软考中级网络工程师》专栏已经更新三十多篇文章了,每篇笔记都包含详细的知识点,希望能帮助到你&#x…...
1.3 C++之变量与数据类型
变量与数据类型教程 目标 理解变量是存储数据的“容器”,数据类型决定容器中能放什么。掌握 int, float, char, bool 的使用。学会声明变量、赋值,定义常量 const。 一、什么是变量? 生活比喻:变量就像“贴了标签的盒子” 盒子…...
SAR ADC 比较器寄生电容对性能的影响
比较器的输入端直接连接CDAC的输出,那比较器的输入端的寄生电容对SAR ADC的性能是否有影响,我们来分析一下。 这是一个单端传统的SAR ADC,SAR ADC 转换只需要采样阶段和转换两个阶段,其中采样阶段一般包含比较器的offset的校正。 采样阶段:接Vin的开关闭合,接Vcom的开关…...
20250520在全志H3平台的Nano Pi NEO CORE开发板上运行Ubuntu Core16.04.3时跑通4G模块EC20
1、h3-sd-friendlycore-xenial-4.14-armhf-20210618.img.gz 在WIN10下使用7-ZIP解压缩/ubuntu20.04下使用tar 2、Win32DiskImager.exe 写如32GB的TF卡。【以管理员身份运行】 3、TF卡如果已经做过会有3个磁盘分区,可以使用SD Card Formatter/SDCardFormatterv5_WinE…...
探秘汽车门槛梁内板右后段成型工艺
引言:汽车制造的关键环节 在汽车制造的复杂体系中,每一个零部件都扮演着不可或缺的角色,其中汽车门槛梁内板右后段虽看似平凡,却对汽车的整体性能和安全起着关键作用。它是车身结构的重要组成部分,犹如建筑的基石&…...
阅读笔记---城市计算中用于预测学习的时空图神经网络研究综述
摘要 随着近年来传感技术的进步,智能城市产生并记录了无数的时空数据。预测时空数据的演变模式是城市计算的一个重要而又苛刻的方面,它可以增强各个领域的智能管理决策,包括交通、环境、气候、公共安全、医疗保健等。传统的统计和深度学习方…...
SpringBootDay1|面试题
目录 一、springboot框架 1、什么是springboot 2、Spring Boot的主要优点 3、springboot核心注解 4、定义banner(springboot的logo) 5、springboot配置文件 6、springboot 整合 jdbc 二、面试题 1)springmvc的作用 编辑 2&#x…...
PyCharm2025的字体的设置
前言 Pycharm中的字体调节,看起来似乎无足轻重。但是,能从容的调节,也是蛮好的,特别是做程序演示的时候。 当前PyCharm采用的是最新的2025.1.1版本(Community),当前的操作系统是Windows。 一、初始状态 …...
【Linux】进程间通信(三):命名管道
📝前言: 这篇文章我们来讲讲Linux 进程间通信(三)——命名管道 🎬个人简介:努力学习ing 📋个人专栏:Linux 🎀CSDN主页 愚润求学 🌄其他专栏:C学习…...
人工智能+:职业技能培训的元命题与能力重构
当“人工智能”成为各行各业的热门命题时,我们似乎跳过了一个更根本的思考:人类究竟需要怎样的AI能力?这个问题不解决,任何技术赋能都可能沦为无本之木。真正的挑战不在于如何应用AI,而在于如何定义人与AI的能力边界—…...
HarmonyOS5云服务技术分享--云存储SDK文章整理
在HarmonyOS ArkTS应用中集成华为云存储SDK指南 大家好呀!今天咱们来聊聊如何将华为云存储SDK集成到基于ArkTS(API 9-11)的HarmonyOS应用中。这篇指南会手把手带你完成从环境准备到代码实现的完整流程,过程中遇到的常见问题也会贴…...