跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Python

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

前言:可以下载一个灵境靶场,不需要复杂的安装环境,进入靶场看, 网址:https://github.com/414aaj/LingJing/releases/tag/0.4.7 ![](https://qiniu.meowparty.cn/coder.2023/2026-04-07/343218a571e34308ad043e6e12fc20bd.png) JWT 签名核心机制 JWT(JSON…

山野诗人发布于 2026/4/7更新于 2026/10/2114K 浏览
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_5、ECDSA、RSASSA-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关进行解答

文章配图

目录

  1. 前言:可以下载一个灵境靶场,不需要复杂的安装环境,进入靶场看,
  2. 靶场第六关:服务器没验证签名
  3. “未签名 Token 提权”,
  4. 靶场第十一关:时间戳与“none”
  5. alg: none的解释
  6. 时间戳

更多推荐文章

查看全部
  • 前端文件下载实战:从原理到最佳实践
  • 基于 Webhook 的飞书机器人搭建与消息推送实战
  • AIGC 个性化与定制化内容生成:技术与应用
  • 大语言模型 LLM 解决 AI 幻觉方法深度分析
  • 程序员生存实录:史记·码农列传
  • C++ 继承进阶:友元、静态成员与菱形继承底层逻辑
  • Stable Diffusion WebUI Windows 部署与常见报错解决方案
  • MySQL 主从集群原理与 Docker 实战部署
  • RabbitMQ/Spring-AMQP 高级特性:事务机制与消息限流实战
  • Django 壁纸管理系统的设计与实现
  • Java JDK 23 本地环境搭建与配置详解
  • Adobe 联合伯克利研发 AI 工具识别面部修图
  • 大模型基本技术:架构、训练与推理优化详解
  • RAG 及数据增强型 LLM 应用的 4 个任务级别划分与应对策略
  • C++ 面向对象:多态的概念与实现原理
  • 前端大数据导出优化:解决 Chrome 内存崩溃的实战方案
  • 强化学习与大模型融合:从理论到机器人实践全解析
  • C++ 多线程同步:条件变量 condition_variable 实战
  • Python Flask 多文件项目打包部署:Linux+Docker+Windows 全环境
  • C++ 伸展树与红黑树原理及代码实现

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online