選擇語言
繁體中文
繁體中文 Traditional Chinese
简体中文
简体中文 Simplified Chinese
English
English English
日本語
日本語 Japanese
AI 助手

今日情報速問。不用選範圍,直接問今天值得看什麼。

完整分析

通知訊訊

暫無新訊訊

ACL_Allow_Count ACL 规则匹配与允许条数统计 说明:给定 3 条 ACL 规则与 2000 条流量日志(rules.txt, traffic.txt)。 规则格式: action: allow/deny proto: tcp/udp/any src/dst: IPv4 或 CIDR 或 any dport: 端口号或 any 流量格式: 匹配原则:自上而下 first-match;若无匹配则默认 deny。 任务:统计被允许(allow)的流量条数并输出该数字,flag格式:flag{allow流量条数} JWT_Weak_Secret 题目描述 本题目模拟真实场景中的JWT(JSON Web Token)安全审计任务,需要检测使用弱密钥签名的JWT令牌,并识别具有管理员权限的用户。 任务要求 1、签名验证: 对于HS256算法的JWT:使用字典中的密码逐一尝试验证签名 对于RS256算法的JWT:使用提供的公钥验证签名 2、权限检查: 检查JWT载荷中的管理员权限标识 管理员权限条件:admin=true 或 role ∈ {admin, superuser} 3、统计结果: 统计同时满足以下条件的JWT令牌数量: 签名验证通过 具有管理员权限 flag格式:flag{a:b:c...},a,b,c是令牌序号,从小到大的顺序。 JWT载荷结构示例 { "iat": 1721995200, // 签发时间 "exp": 1722038400, // 过期时间 "sub": "alice", // 用户标识 "iss": "svc-auth", // 签发者 "admin": true, // 管理员标识(方式1) "role": "admin" // 角色标识(方式2) } import jwt import json # 文件路径 PUBLIC_KEY_FILE = "public.pem" TOKENS_FILE = "tokens.txt" WORDLIST_FILE = "wordlist.txt" def load_public_key(path): with open(path, "r") as f: return f.read() def load_tokens(path): with open(path, "r") as f: return [line.strip() for line in f if line.strip()] def load_wordlist(path): with open(path, "r") as f: return [line.strip() for line in f if line.strip()] def is_admin(payload): # 管理员权限判定 if payload.get("admin") is True: return True if payload.get("role") in ["admin", "superuser"]: return True return False def verify_hs256(token, wordlist): for secret in wordlist: try: payload = jwt.decode(token, secret, algorithms=["HS256"]) return payload except jwt.InvalidSignatureError: continue except jwt.ExpiredSignatureError: # 签名合法,时间过期仍认为签名有效 return jwt.decode(token, secret, algorithms=["HS256"], options={"verify_exp": False}) except Exception: continue return None def verify_rs256(token, public_key): try: payload = jwt.decode(token, public_key, algorithms=["RS256"]) return payload except jwt.ExpiredSignatureError: return jwt.decode(token, public_key, algorithms=["RS256"], options={"verify_exp": False}) except Exception: return None def main(): public_key = load_public_key(PUBLIC_KEY_FILE) tokens = load_tokens(TOKENS_FILE) wordlist = load_wordlist(WORDLIST_FILE) valid_admin_tokens = [] for idx, token in enumerate(tokens, start=1): header = jwt.get_unverified_header(token) payload = None if header.get("alg") == "HS256": payload = verify_hs256(token, wordlist) elif header.get("alg") == "RS256": payload = verify_rs256(token, public_key) else: continue # 不支持的算法 if payload and is_admin(payload): valid_admin_tokens.append(idx) flag = "flag{" + ":".join(map(str, valid_admin_tokens)) + "}" print(flag) if name == "main": main()