Problem: [陇剑杯 2021]jwt(问2)
思路
题目给了一个 pcap 文件,丢进 Wireshark 分析。发现有 POST /exec 的请求,比较可疑,Follow HTTP Stream 查看之,在 Cookie header 中发现使用的 token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODcsIk1hcENsYWltcyI6eyJ1c2VybmFtZSI6ImFkbWluIn19.rurQD5RYgMrFZow8r-k7KCP13P32sF-RpTXhKsxzvD0,找一个在线 jwt 网站解码 token,获得 id 和 username,根据题目要求提交 flag。
EXP
import base64
import json
jwt_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTAwODcsIk1hcENsYWltcyI6eyJ1c2VybmFtZSI6ImFkbWluIn19.rurQD5RYgMrFZow8r-k7KCP13P32sF-RpTXhKsxzvD0"
def b64url_decode(data):
data += '=' * (-len(data) % 4) # fix padding
return base64.urlsafe_b64decode(data)
header_b64, payload_b64, signature_b64 = jwt_token.split(".")
header = json.loads(b64url_decode(header_b64))
payload = json.loads(b64url_decode(payload_b64))
print("[+] Header:")
print(json.dumps(header, indent=2))
print("\n[+] Payload:")
print(json.dumps(payload, indent=2))
print("\n[+] Signature (raw):")
print(signature_b64)
总结
流量分析,jwt。
