WebGoat搭建和Yakit学习

环境搭建

jdk版本:openjdk version "17.0.5“

WebGoat版本:webgoat-server-8.1.0.jar

环境不同有很大可能不能搭建成功

运行命令:java -jar webgoat-server-8.1.0.jar --server.port=8888 --server.address=192.168.142.131 

搭建完成后浏览器访问

 完成注册后就可以开始使用

JWT

JWT详解

jwt即(json,web,token),因为配置不当很容易造成越权问题

JWT(JSON Web Token)由三部分组成:头部(Header)、载荷(Payload)、签名 (Signature)。

头部(Header):头部通常由两部分组成,算法类型和令牌类型。 算法类型:指定用于生成签名的算法,例如 HMAC、RSA 或者 ECDSA。 令牌类型:指定令牌的类型,常见的是 JWT。 头部使用 Base64Url 编码表示,并作为整个 JWT 的第一部分。头部的一个示例: { "alg": "HS256",none "typ": "JWT" }

载荷(Payload):载荷存储了有关用户或实体的声明和其他有关信息。 声明:如用户 ID、角色、权限等信息。 注册声明:包含一些标准的声明(比如发行人、过期时间等)和一些自定义的 声明。 载荷也使用 Base64Url 编码表示,并作为整个 JWT 的第二部分。载荷的一个示例: { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 }

签名(Signature):签名是对头部和载荷进行签名的结果,用于验证 JWT 的完整 性和真实性。 签名生成方式:将头部和载荷进行 Base64Url 编码后拼接在一起,然后使 用指定的加密算法(如 HMAC、RSA)进行签名,将生成的签名添加到 JWT 中

JWT signing

这题的解题条件是重置投票,可是提示我们不是admin

抓包,这里我用了Yakit,bp其实也可以

将数据包发送到fuzz模块

上面的功能试了一下不太行,这里提供一个免费JWT解析网站  jwt.io

如图,这里jwt的格式是这样的,要修改一下 ,修改 payload 数据,admin 修改为 true,将加密方式修改为 none,因为数据是通过base64加密的,这里提供在线加密网站 Base64加密、解密-BeJSON.com

要注意,不要复制=号

如图

将payload复制到抓取的数据包替换即可

发送请求,结果又失败了,看了一下是忘记删除第三处的加密算法了,将点后面的删掉即可,不要把点也删了,成功通关

Refreshing a token

这题要让tom给我们付钱,点击here看到日志信息

点击购买,抓取数据包,发到fuzz模块

先把日志的token字段复制出来,很明显是jwt格式数据,中间两个点,拿去解密

eyJhbGciOiJIUzUxMiJ9.eyJpYXQiOjE1MjYxMzE0MTEsImV4cCI6MTUyNjIxNzgxMSwiYWRtaW4iOiJmYWxzZSIsInVzZXIiOiJUb20ifQ.DCoaq9zQkyDH25EcVWKcdbyVfUL4c9D4jRvsqOqvi9iAd4QuqmKcchfbU8FNzeBNF9tLeFXHZLU4yRkq-bjm7Q

注意到有一个exp(expire),即过期时间

 鼠标悬在数字上,这个网站提示我们这个18年就过期了

直接修改时间,这个时间其实就是离某个时间过了多少秒

把payload复制到base64加密,剩下的步骤和前面没什么区别

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值