Polar CTF Web 简单难度题目实战解析
本文针对 Polar CTF Web 简单难度题目进行实战复盘,涵盖 SWP 文件泄露、PCRE 回溯绕过、RCE 命令执行、JWT 伪造、Session 文件包含等常见 Web 安全漏洞。通过代码审计与流量分析,演示了如何构造 Payload 获取 Flag,重点讲解正则过滤绕过技巧及 PHP 反序列化利用方法。
SWP 文件泄露与 PCRE 回溯绕过
第一题通常作为热身,访问 /.index.php.swp 可发现备份文件。F12 查看源码或下载后分析,发现 POST 传参 xdmtql 需包含 "sys nb" 且匹配 /sys\.\*nb/is 正则。由于参数不能为数组,常规绕过无效,但可利用 PCRE 回溯次数限制(ReDoS)使 preg_match 失效。
import requests
url = 'http://6798cfa0-6424-4490-af65-7ee1c5b6153e.www.polarctf.com:8090/'
data = {
'xdmtql': 'sys nb' + 'very' * 250000
}
r = requests.post(url=url, data=data).text
print(r)
运行脚本即可触发逻辑漏洞返回 Flag。
简单 RCE 与正则绕过
该题提供一段 PHP 代码,要求满足两个条件:GET 参数 sys 存在,POST 参数 yyds 存在。函数内部通过正则禁止了 cat 等读取命令及空格,并禁用了部分执行函数。绕过思路在于利用 include 直接包含 /flag 文件,同时规避空格过滤。
Payload 构造如下:
/?sys=include"/flag";
配合 POST 传参 yyds=666 即可执行。
蜜雪冰城吉警店
题目要求点第 9 个隐藏款奶茶的单子。查看源代码发现 ID 列表仅到 8,直接将请求中的 id=8 修改为 id=9 并提交,即可触发隐藏逻辑获取 Flag。
召唤神龙与 JSFuck
游戏界面看似无法操作,查看 main.js 源码发现一段加密文本。经识别为 JSFuck 编码,使用在线工具解码后可还原出原始逻辑,进而找到通关路径。
Seek Flag 与多源信息聚合
- 访问
robots.txt获取flag3。 - 抓包分析响应头或 Body,定位
flag2。 - 参考 Cookie 机制,将
id改为 1 发送请求,获取flag1。 - 拼接所有片段得到完整 Flag。
JWT 伪造
登录界面存在 Base64 编码字符串,解密后无明显意义。注册普通用户后查看源码,发现 JWT 令牌结构。使用工具爆破密钥,得到 SYSA。随后伪造 JWT 载荷,将用户名修改为 admin,重新签名并替换 Cookie 即可越权访问。
Login 与学号递增
前端提示登录成功但无实质反馈。通过 BP 抓包尝试攻击,发现学号从 2 开始递增时,每个请求会返回 Flag 的一部分。遍历学号收集碎片后拼接即可。


