WebGoat 靶场 JWT tokens 四 五 七关通关教程

文章目录

  • webGoat靶场
    • 第 四 关 修改投票数
    • 第五关
    • 第七关 你购买书,让Tom用户付钱

webGoat靶场

越权漏洞

webgoat-server-8.1.0.jar复制到kali虚拟机中

image-20230914205837708

sudo java -jar webgoat-server-8.1.0.jar --server.port=8888

解释:

  • java:这是用于执行Java应用程序的Java运行时命令。

  • -jar:此选项用于指定你正在运行 JAR 文件。

  • webgoat-server-8.1.0.jar:这是你要执行的 JAR 文件的名称。它是 WebGoat 服务器 JAR 文件,这是一个故意不安全的 Web 应用程序,用于安全培训和测试。

  • --server.port=8888:这是传递到 WebGoat 服务器的命令行参数。它将服务器的端口设置为 8888,这意味着 WebGoat 应用程序将在端口 8888 上侦听传入请求。

http://localhost:8888运行此命令将在端口 8888 上启动 WebGoat 应用程序,允许你通过 Web 浏览器导航到或 来访问它http://127.0.0.1:8888,具体取决于你的本地配置。

image-20230914210301108

访问页面:

image-20230914210417044

选择JWT tokens :

image-20230914210539342

第 四 关 修改投票数

image-20230914210739745

点击上图中的右上角删除,bp抓包:

image-20230914213104931

复制其JWT的三个部分:头部(Header)、载荷(Payload)和签名(Signature)也就是Cookie字段的access_token的值

eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE2OTU1NjEyMDAsImFkbWluIjoiZmFsc2UiLCJ1c2VyIjoiVG9tIn0.91qHC1bmg_L1WQ4-jrCPUanghSqdauz9E7Mwbae-IDpYgnahr3G60iVI1xA-pEGGyxhfc7E9wbDn_TAjsGqb9Q

到jwt.io 网站中粘贴,查看:

image-20230914213238645

将其中的alg值改为none ,表示不使用签名算法,那么第三部分的签名就没有意义了。然后将admin 值改为true

image-20230914212356826

因为我们把alg的值改为了none,所以第三部分的签名认证就没用了,将其前两部分复制(注意要加上连接第三段的点),替换掉bp中的jwt:

image-20230914213941676

发包:

image-20230914214322349

成功重置:

image-20230914214415669

第五关

image-20231008204421678

假设我们有以下令牌,尝试找出密钥并提交一个新密钥,用户名更改为 WebGoat

eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY5Njc2ODg2NCwiZXhwIjoxNjk2NzY4OTI0LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8y1cNmgQ46VK-0Myq8chx7SqHMLZ4PhEsQZZxanxvMM

首先分析一下题目,题目说需要找出密钥,并且用户名更改为 WebGoat,重点就是在找出密钥

将 token 解密观察

通过jwt 解密网站解密

image-20231008205426014

发现在 header 头部的加密方式还是 HS256,这不是重点
重点在 payload 声明中的 exp 和 username,exp 是 token 过期的时间戳,时间戳需要修改到当前时间之后,也就让它不过期
而 username 就是题目要我们修改的东西,我们需要把 username 修改为 WebGoat

删除编码后的=,得到修改后的 token

eyJhbGciOiJIUzI1NiJ9.ewogICJpc3MiOiAiV2ViR29hdCBUb2tlbiBCdWlsZGVyIiwKICAiYXVkIjogIndlYmdvYXQub3JnIiwKICAiaWF0IjogMTY5Njc2ODg2NCwKICAiZXhwIjogMTY5Njc3MTEwMCwKICAic3ViIjogInRvbUB3ZWJnb2F0Lm9yZyIsCiAgInVzZXJuYW1lIjogIldlYkdvYXQiLAogICJFbWFpbCI6ICJ0b21Ad2ViZ29hdC5vcmciLAogICJSb2xlIjogWwogICAgIk1hbmFnZXIiLAogICAgIlByb2plY3QgQWRtaW5pc3RyYXRvciIKICBdCn0.8y1cNmgQ46VK-0Myq8chx7SqHMLZ4PhEsQZZxanxvMM

但是因为加密方式还是 HS256 ,我们还需要密钥才能得到签名,所以需要用到一个 github 上的工具jwtcrack在本地暴力破解密钥,用这个工具需要准备一个字典,这里我们的是top1000.txt

我们将题目给的完整的 jwt-token 复制,并且在工具目录打开 cmd,执行以下命令:

python crackjwt.py JWT top1000.txt

这里我执行的是:

python crackjwt.py eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY2ODE3NjEyNiwiZXhwIjoxNjY4MTc2MTg2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8QnyWHtsJgvKPAROiFDESES3vSViT_HB2TTreY4rP10 top1000.txt

破解成功:

image-20231008214351061

将密钥 victory 填入解密网站,然后直接在网站修改 exp 与 username,会自动生成新的 jwt-token

image-20231008215415355

复制左侧生成的 token 直接填入关卡即可成功伪造用户信息

伪造成功:

image-20231008215548377

第七关 你购买书,让Tom用户付钱

image-20230914214950782

点击上图中的here

image-20230914215308068

找到了一个jwt:

eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE1MjYxMzE0MTEsImV4cCI6MTUyNjIxNzgxMSwiYWRtaW4iOiJmYWxzZSIsInVzZXIiOiJUb20ifQ.DCoaq9zQkyDH25EcVWKcdbyVfUL4c9D4jRvsqOqvi9iAd4QuqmKcchfbU8FNzeBNF9tLeFXHZLU4yRkq-bjm7Q

查看:

image-20230914215409435

我们先结账抓包一下:

image-20230914215615196

抓包:

image-20230914215702283

显示不是有效的JWT令牌,请重试。

我们把上面找到的jwt放进去:

image-20230914215920409

显示解决方案不正确,显示JWT已经过期了。JWT的payloadexp表示jwt的过期时间。

image-20230914220441315

也可以找工具换算一下

image-20230914220553174

已经过期。

我们改一下时间戳:

1694707000

image-20230914220958422

修改JWT:将alg置为none,exp置为1694707000

image-20230914221425817

粘贴到bp中(注:不需要复制其jwt的第三部分,但要跟上连接第三部分的.):

image-20230914221831226

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

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

相关文章

MySQL命令行中文乱码问题

MySQL命令行中文乱码问题: 命令行界面默认字符集是gbk,若字符集不匹配会中文乱码或无法插入中文。 解决办法:执行set names gbk; 验证: 执行命令show variables like ‘char%’;查看默认字符集。 创建数据库设置字符集utf8&…

2023旅游产业内容营销洞察报告:如何升级经营模式,适配社媒新链路

2023年我国旅游业强劲复苏,上半年旅游消费增长显著,政府出台一系列文旅扶持政策后,旅游业也在积极寻求数字化转型的升级方式。 上半年以旅游消费为代表的服务业对经济的增长贡献率超过60%,旅游企业普遍实现经营好转,企…

【FPGA零基础学习之旅#14】串口发送字符串

🎉欢迎来到FPGA专栏~串口发送字符串 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:FPGA学习之旅 文章作者技术和水平有限,如果文中出现错误,希望大家能指正…

电脑散热——液金散热

目录 1.简介 2.传统硅脂与液金导热区别 3.特点 4.优点 5.为什么液金技术名声不太好 6.使用方法 1.简介 凡是对于电脑基础硬件有所了解的人,都知道硅脂是如今高性能电脑设备中必不可少的东西。芯片表面和散热器接触面,虽然肉眼看上去是非常光滑的金属…

C (1094) : DS双向链表—前驱后继

Description 在双向链表中,A有一个指针指向了后继节点B,同时,B又有一个指向前驱节点A的指针。这样不仅能从链表头节点的位置遍历整个链表所有节点,也能从链表尾节点开始遍历所有节点。 对于给定的一列数据,按照给定的…

C#封装、继承和多态的用法详解

大家好,今天我们将来详细探讨一下C#中封装、继承和多态的用法。作为C#的三大面向对象的特性,这些概念对于程序员来说非常重要,因此我们将对每个特性进行详细的说明,并提供相应的示例代码。 目录 1. 封装(Encapsulati…

ElementUI结合Vue完成主页的CUD(增删改)表单验证

目录 一、CUD ( 1 ) CU讲述 ( 2 ) 编写 1. CU 2. 删除 二、验证 前端整合代码 : 一、CUD 以下的代码基于我博客中的代码进行续写 : 使用ElementUI结合Vue导航菜单和后台数据分页查询 ( 1 ) CU讲述 在CRUD操作中,CU代表创建(Create&#xff09…

我做了一个简易P图(参数图)分析软件

P图(即参数图,Parameter Diagram),是一个结构化的工具,帮助大家对产品更好地进行分析。 典型P图格式 P图最好是和FMEA软件联动起来,如国可工软的FMEA软件有P图分析这个功能。 单纯的P图分析软件很少,为了方便做P图分…

Elasticsearch:多语言语义搜索

在此示例中,我们将使用多语言嵌入模型 multilingual-e5-base 对混合语言文档的 toy 数据集执行搜索。 使用这个模型,我们可以通过两种方式进行搜索: 跨语言,例如使用德语查询来查找英语文档在非英语语言中,例如使用德…

【C++】多线程的学习笔记(2)——白话文版(bushi

目录 前一篇 本章内容提要 使用mutex锁的原因 mutex锁的概念 mutex的使用教程 锁的声明以及命名 mutex的加锁以及解锁 例子 结果 注意 mutex的其他方式的锁介绍 lock_guard 介绍 例子 运行结果 adopt_lock参数 unique_lock 介绍 try_to_lock defer_lock re…

iOS开发 通过分析UMeng的错误详情解决crash问题

iOS开发 通过分析UMeng的错误详情解决crash问题 在项目中获取崩溃信息很重要。在iOS开发调试以及上线之后,程序经常会出现Crash问题。比较常见的第三方crash分析工具是使用友盟、百度、crashlytics等。第三方crash分析工具,甚至还带了符号化crash日志的…

设计模式 - 七大软件设计原则

目录 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 1.2.2、单一职责原则 1.2.3、里氏替换原则 1.2.4、迪米特原则 1.2.5、接口隔离原则 1.2.6、依赖倒转原则 1.2.7、合成/聚合复用原则 一、设计模式 1.1、软件设计原则 1.1.1、开闭原则 开闭原则:对扩…

Docker 日志管理 - ELK

Author:rab 目录 前言一、Docker 日志驱动二、ELK 套件部署三、Docker 容器日志采集3.1 部署 Filebeat3.2 配置 Filebeat3.3 验证采集数据3.4 Kibana 数据展示3.4.1 创建索引模式3.4.2 Kibana 查看日志 总结 前言 如何查看/管理 Docker 运行容器的日志?…

1.Linux入门基本指令

个人主页:Lei宝啊 愿所有美好如期而遇 目录 01.ls指令 02.pwd指令 03.cd指令 04.touch指令 05.mkdir指令(重要) 06.rmdir&&rm指令(重要) 07.man指令(重要) 08.cp指令(重要) 09.mv指令(重要) 10.cat指令 nano指令 echo指令 输出重定向 追加重…

当 FineReport 遇见 CnosDB

随着大数据和物联网应用的快速发展,时序数据库成为了一种关键的数据存储和分析工具。而 FineReport 作为一款流行的商业智能工具,与时序数据库 CnosDB 的集成可以为企业提供更强大的数据分析和可视化功能。本博客将介绍如何将 FineReport 与 CnosDB 集成…

架构师-软件工程习题选择题

架构师-软件工程习题选择题

SpringBoot-黑马程序员-学习笔记(一)

8.pom文件中的parent 我们使用普通maven项目导入依赖时,通常需要在导入依赖的时候指定版本号,而springboot项目不需要指定版本号,会根据当前springboot的版本来下载对应的最稳定的依赖版本。 点开pom文件会看到这个: 继承了一个…

【Redis】基础数据结构-简单动态字符串SDS

C语言字符串 char *str "redis"; // 可以不显式的添加\0,由编译器添加 char *str "redis\0"; // 也可以添加\0代表字符串结束C语言中使用char*字符数组表示字符串,‘\0’来标记一个字符串的结束,不过在使用的过程中我…

自动驾驶传感器技术

自动驾驶传感器技术是自动驾驶系统的关键组成部分,它使车辆能够感知并理解周围环境。本文将深入探讨自动驾驶传感器技术,包括常见类型、工作原理以及它们在自动驾驶中的作用。 1. 摄像头 摄像头的工作原理 摄像头是基于光学原理的传感器,其…

【数组】二分查找(减不减一,看初始化!)

一、力扣习题链接 704. 二分查找 - 力扣(LeetCode) 二、思路 这道题目的前提是数组为有序数组,同时题目还强调数组中无重复元素,因为一旦有重复元素,使用二分查找法返回的元素下标可能不是唯一的,这些都是…