SunshineCTF 2025 Web 题目详解与解法教学
1. Lunar Auth
题目背景
目标是通过前端验证机制获取管理员权限,访问 /admin 路径获取 flag。
关键步骤
- 访问
/admin路径:发现存在前端验证逻辑。 - 分析页面源码:在前端代码中发现账号密码的加密形式。
- 解密凭据:
- 账号:
alimuhammadsecured - 密码:`S3cur4_P@
- 账号:
\[w0RD!` 4. **登录获取 flag**:使用解密后的凭据登录系统,成功访问 `/admin` 并得到 flag。 ### 技术要点 - 前端验证可能通过 JavaScript 实现,需审查源码或调试网络请求。 - 加密方式可能为 Base64 或简单编码,需尝试常见解码方法。 --- ## 2. Lunar Shop ### 题目背景 通过 SQL 注入获取隐藏的 flag 数据,产品 ID 存在注入点。 ### 关键步骤 1. **测试输入点**:在产品查询处输入 `1'` 触发 SQL 报错,确认存在数字型注入。 2. **判断数据库类型**:通过 `database()` 查询确认数据库为 SQLite。 3. **构造联合查询**: ```sql 1 UNION SELECT 1,2,3,(SELECT group_concat(flag) FROM flag) ``` 4. **获取 flag**:执行注入 payload,直接从 `flag` 表中提取数据。 ### 技术要点 - SQLite 注入需使用 `UNION SELECT` 和系统表(如 `sqlite_master`)获取表结构。 - `group_concat()` 用于合并多行数据,避免多次查询。 --- ## 3. Intergalactic Webhook Service ### 题目背景 利用 DNS 重绑定攻击绕过 SSRF 防护,访问本地受限路径 `/flag`。 ### 关键步骤 1. **分析源码与 WAF 规则**: - 禁止私有网段、回环地址、链路本地地址和保留地址。 - `requests.post` 不支持 `gopher` 协议。 2. **DNS 重绑定攻击**: - 使用工具生成动态域名(如 [rebinder.html](https://lock.cmpxchg8b.com/rebinder.html))。 - 首次解析为合法 IP(如 `8.8.8.8`)通过注册检查。 - 二次请求时通过短 TTL 切换解析为 `127.0.0.1`,绕过 WAF。 3. **触发访问**:通过重绑定域名访问 `http://127.0.0.1/flag` 获取 flag。 ### 技术要点 - DNS 重绑定依赖域名解析的时序差异,需多次尝试以匹配 TTL 窗口。 - 工具需配置双 IP(公网 + 本地)并确保 TTL 极短(如 0-1 秒)。 --- ## 4. Web Forge ### 题目背景 通过 SSRF 和 SSTI 组合攻击,利用内部工具访问本地服务并执行模板注入。 ### 关键步骤 1. **目录扫描与信息收集**: - 发现 `robots.txt` 提示需要特殊请求头:`SSRF access header: true`。 - 爆破确认需设置 `Allow: true`。 2. **访问 `/fetch` 工具**:用于发送 HTTP 请求,但需指定端口(非默认 80)。 3. **探测本地服务端口**:常见端口(8000、8080、5000)中确认服务运行在 8000 端口。 4. **构造 SSTI Payload**: - 目标 URL:`http://127.0.0.1:8000/admin?template={{恶意表达式}}`。 - 绕过过滤(禁用 `.` 和 `_`): - 使用 `|attr()` 替代点号访问属性。 - 十六进制编码绕过关键字(如 `\x5f` 代替 `_`)。 - 最终 Payload: ``` {{request|attr('application')|attr('\x5f\x5fglobals\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fbuiltins\x5f\x5f')|attr('\x5f\x5fgetitem\x5f\x5f')('\x5f\x5fimport\x5f\x5f')('os')|attr('popen')('cat /flag')|attr('read')()}} ``` 5. **获取 flag**:通过 SSTI 执行系统命令读取 flag。 ### 技术要点 - SSTI 绕过需熟悉 Jinja2 模板特性,利用 `attr()` 和编码绕过过滤。 - SSRF 工具需正确指定端口和协议(HTTP)。 --- ## 5. Lunar File Invasion ### 题目背景 通过目录穿越和双重编码绕过路径校验,实现任意文件读取。 ### 关键步骤 1. **信息收集**: - `robots.txt` 泄露测试文件(如 `/.gitignore_test`)。 - 静态页面 `login.html~` 泄露账号密码:`admin@lunarfiles.muhammadali` / `jEJ&(32)DMC