WebGoat-JWT最新版过关教程/帮你学习gwt逻辑越权漏洞原理(第六关和第十一关)

WebGoat-JWT最新版过关教程/帮你学习gwt逻辑越权漏洞原理(第六关和第十一关)

前言:可以下载一个灵境靶场,不需要复杂的安装环境,进入靶场看,

网址:https://github.com/414aaj/LingJing/releases/tag/0.4.7

  1. JWT 签名核心机制

JWT(JSON Web Token)由 Header.Payload.Signature 三部分组成,签名是保障令牌完整性与真实性的核心:

  • 作用:防止客户端篡改令牌内容,确保令牌在传输与存储过程中未被恶意修改
  • 常用算法
    • 对称加密:HMAC-SHA256(HS256)
    • 非对称加密:RSASSA-PKCS1-v1_5ECDSARSASSA-PSS
  • 关键原则令牌在交付客户端前必须签名,服务端接收后必须先验证签名再执行其他操作在完成搜索jwt密钥爆破脚本,尝试通关webgoat密钥伪造关卡,我们可以先试着了解一下,cookie,token,session通俗的说session,就是用户输入的账号号密码,在服务器,防止不明身份的用户执行违法的操作,但是用户的每一次操作不可能输入一次账号和密码于是有了token验证生成签名和时间戳等,确保身份的合法性Session:服务器存信息,给用户一个 “编号”(依赖服务器存储)Token:用户带信息,服务器只验真伪(不依赖服务器存储,更适合多服务器 / APP 场景)
  • 比如:1.攻击者拿到自己的 JWT:header.payload.signature
    1. 解码 payload 看到:{"user_id":123, "role":"user"}(普通用户)
    2. role 改成 "admin",重新编码 payload
    3. 构造新 Token:原header.篡改后的payload.随便填(甚至把 signature 删掉)
    4. 服务器收到后,直接解析 payload 就用,没验证签名 → 攻击者变成管理员。
    5. 认证方式Authorization 头携带 JWT 令牌,且令牌采用了 alg: none 无签名模式(从响应反馈可佐证)

靶场第六关:服务器没验证签名

“未签名 Token 提权”,

靶场第六关:翻译过后我们可以看出,这是一个可以投票重置的关卡,我们需要以一个普通用户的身份,行使管理员权限,造成水平越权

先登录一个普通的用户Tmo行使(重置投票),他会告诉我们:管理员的权限

打开用yakit抓包,看显示: "feedback": "Only an admin user can reset the votes",

所以我们只需要改变Cookie就可以了,打开:https://www.jwt.io/,这个网站可以对JSON WEB 解码并验证 JWT

运用解码网站,进行

进行base编码Cookie:access_token=ewogICJhbGciOiAibm9uZSIKfQ.ewogICJpYXQiOiAxNzU1MDczNDY5LAogICJhZG1pbiI6ICJ0cnVlIiwKICAidXNlciI6ICJUb20iCn0.; JSESSIONID=E414E813D2B635E7F35FD26AB0F1DF2C

使用Yakit:修改cookie后,Tom就有了管理员的权限,投票也被重置

靶场第十一关:时间戳与“none”

这关能简单,能用易理解,我们来尝试第13关,可以使用同样的方法

结账发现身份令牌无效,于是就想能不能让别人给我们付钱,我们只需要知道别人的身份令牌正好,这个网页的漏洞可以看到日志中有汤姆的身份令牌,那就尝试

抓包,修改

alg: none的解释

是 JSON Web Signature (JWS) 规范中定义的一种无签名算法,核心含义是:JWT(JSON Web Token)仅做 Base64 编码和结构化组织,不进行任何数字签名 / 验签,仅传递明文信息(Header + Payload),不保证数据的完整性、真实性和不可篡改。

时间戳

  • iat (Issued At):令牌签发时间,Unix 时间戳(秒)。
  • exp (Expiration Time):令牌过期时间,Unix 时间戳(秒)。通常服务器会拒绝当前时间晚于 exp 的令牌。
  • 你看到的像 1701234567 这样的数字,代表的是从 1970-01-01 00:00:00 UTC 到指定时间经过的秒数
  • 优点:不受时区影响(统一为 UTC),便于计算机存储和比较大小。

我们在对继续对第11关进行解答

Read more

【避坑指南】部署 Open WebUI 报错:ModuleNotFoundError: No module named ‘pkg_resources‘ 彻底解决方法

【避坑指南】部署 Open WebUI 报错:ModuleNotFoundError: No module named ‘pkg_resources‘ 彻底解决方法

目录 【避坑指南】部署 Open WebUI 报错:ModuleNotFoundError: No module named 'pkg_resources' 彻底解决方法 前言 问题描述 环境背景 原因分析 解决方案 第一步:补齐基础依赖 第二步:彻底解决(推荐) 第三步:验证修复 进阶:针对 Open WebUI 的额外提示 总结 【避坑指南】部署 Open WebUI 报错:ModuleNotFoundError: No module named 'pkg_resources' 彻底解决方法 前言 最近在本地环境(Windows

2026实测|DeepSeek-R1-Distill-Qwen-1.5B部署全攻略(vLLM+Open WebUI,0.8GB显存就能跑,告别服务器瓶颈)

2026实测|DeepSeek-R1-Distill-Qwen-1.5B部署全攻略(vLLM+Open WebUI,0.8GB显存就能跑,告别服务器瓶颈)

前言:2026年,轻量级大模型部署已成为开发者核心需求——专业GPU服务器成本高昂、边缘设备算力有限,多数1.5B级模型仍需3GB以上显存,让个人开发者与中小企业望而却步。而DeepSeek-R1-Distill-Qwen-1.5B(下称“DQ-1.5B”)的出现打破僵局,通过知识蒸馏技术在1.5B参数体量下实现接近7B级模型的推理能力,配合vLLM推理加速与Open WebUI可视化交互,实测0.8GB显存即可稳定运行,无需高端服务器,个人PC、边缘设备均可轻松落地。本文结合2026年最新实测数据,从核心原理、分步实操、实测验证、应用场景、落地案例到问题排查,打造零冗余、高可用的部署全攻略,兼顾专业性与实用性,助力开发者快速上手,轻松实现轻量级大模型本地化部署。 一、核心技术解析 部署前先理清三大核心组件的核心逻辑,无需深入底层源码,聚焦“为什么能用、为什么高效”,贴合开发者落地需求。 1.1 模型核心:DeepSeek-R1-Distill-Qwen-1.5B 优势解析 DQ-1.5B是DeepSeek团队基于Qwen-1.

最新版 springdoc-openapi-starter-webmvc-ui 常用注解详解 + 实战示例

当然可以!在 Spring Boot 3 + SpringDoc OpenAPI(Swagger 3 替代方案)生态中,springdoc-openapi-starter-webmvc-ui 是目前官方推荐的集成方式。它提供了一套丰富的注解,用于精细化控制 API 文档的生成,提升前端、测试、产品等协作方的体验。 ✅ 最新版 springdoc-openapi-starter-webmvc-ui 常用注解详解 + 实战示例 📌 当前最新稳定版本:springdoc-openapi 2.5+(2025年仍适用) 📌 所有注解位于包:io.swagger.v3.oas.annotations.* 🧩 一、核心注解概览 注解作用适用位置@OpenAPIDefinition全局 API 信息配置(标题、版本、联系人等)@Configuration 类@Tag标记 Controller 或方法所属的“标签/