消息详情
暗夜之界 | Hacker技术 SQL · @AZQVQ · 2026年10月20日 15:37
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()
相關消訊
- #!/usr/bin/env python3 import struct # PostgreSQL 页面大小 8KB PG_PAGE_SIZE = 8192…
- def main(): # 解析命令行参数 parser = argparse.ArgumentParser(description='P…
- #!/usr/bin/env python3 import argparse import struct import csv import base64 f…
- 4 仅用SELECT语句实现远程代码执行 4.0 读取原始postgresql.conf配置文件 完成 RCE 第一步是下载原始配置文件。目前已是超管可直接通…
- 区块结构 区块是一种记录交易的数据结构,每个区块由区块头和区块主体组成,区块主体负责记录前一段时间内的所有交易信息,区块链的大部分功能都由区块头实现,区块头数…
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010
- Telegram必备的搜索引擎,极搜JISOU帮你精准找到,想要的群组、频道、视频、音乐 👉 t.me/jisou2?start=a_8315722010