[Root-me]JSON Web Token (JWT) - Introduction Writeup

个人博客地址

http://www.darkerbox.com

欢迎大家学习交流

Root-me网址:

https://www.root-me.org/en/Challenges/Web-Server/JSON-Web-Token-JWT-Introduction

知识点

  • JWT

前言

如果没有了解过JWT。可以参考这篇文章。

https://www.freebuf.com/articles/web/180874.html

ok

Ok,现在你了解了一些JWT的基础知识。这些足够了。

来到登录页面

[Root-me]JSON Web Token (JWT) - Introduction Writeup_第1张图片

哦豁,看到个guest账号登录,咱登一下子。

[Root-me]JSON Web Token (JWT) - Introduction Writeup_第2张图片

没东西,既然是JWT,那就刷新页面抓包看看

[Root-me]JSON Web Token (JWT) - Introduction Writeup_第3张图片
在cookie中看见了jwt参数,意思已经这么明显了。每段base64解码看看

[Root-me]JSON Web Token (JWT) - Introduction Writeup_第4张图片

站长工具解码失败。
[Root-me]JSON Web Token (JWT) - Introduction Writeup_第5张图片

https://tool.oschina.net/encrypt?type=3
[Root-me]JSON Web Token (JWT) - Introduction Writeup_第6张图片

看见了payload中username是guest。第一反应就是改为admin。但是如果要改为admin的话。第三部分签名也需要变。但不知道密钥。所以不能直接修改

以下就个人理解了

加密算法改为None,则不需要加密,则签名为空。验证就可以通过。
在这里插入图片描述
这里可以使用python的pyjwt库。pip install pyjwt

import jwt
encoded = jwt.encode({'username': 'admin'}, '', algorithm='none')

encode方法接受很多个参数。这里我给了三个参数
第一个参数:payload
第二个参数:进行加密签名的密钥
第三个参数:签名加密方式

在这里插入图片描述

[Root-me]JSON Web Token (JWT) - Introduction Writeup_第7张图片

欢迎大家一起学习交流,共同进步,欢迎加入信息安全小白群

在这里插入图片描述

你可能感兴趣的:(Rootme)