Polar2025秋季挑战赛web-writeup
字数 3179 2025-09-23 19:27:38
Polar 2025 秋季挑战赛 Web 题解与教学
题目列表与解法详解
1. white
考察点:命令注入与绕过技巧
解题步骤
- 在登录页面下载备忘录时发现用户等级分为四个等级
- 通过抓包发现存在
id=user参数 - 将参数值修改为最高等级
root登录即可获取flag
关键技术点
- 水平越权漏洞:通过修改用户标识获取更高权限
- 抓包工具使用:Burp Suite或浏览器开发者工具
防御方案
- 对用户身份进行服务端验证
- 使用会话管理而非参数传递用户身份
2. 俄罗斯方块
考察点:前端源码分析与敏感接口发现
解题步骤
- 查看JavaScript源码发现条件判断后会请求
get_squirrt1e.php - 直接访问该接口获取flag
关键技术点
- 前端代码审计:检查JS文件中的隐藏接口或敏感信息
- 开发者工具使用:Sources面板查看源码
防御方案
- 敏感接口应进行权限验证
- 避免在前端代码中暴露内部接口地址
3. vip
考察点:参数篡改与布尔值绕过
解题步骤
- 抓包发现参数
vip=false - 将参数值改为
vip=true获取权限提升
关键技术点
- 参数篡改攻击:修改客户端传递的参数值
- 布尔值处理:服务端应对参数进行严格验证
防御方案
- 服务端进行权限验证而非依赖客户端参数
- 对输入参数进行严格类型检查
4. 代码审计
考察点:文件包含与目录遍历漏洞
题目源码分析
<?php
$page = 'hello.php';
if (isset($_GET['page'])) {
$page = $_GET['page'];
}
$base_dir = __DIR__ . '/pages/';
$target = $base_dir . $page;
if (preg_match('/https?:\/\//i', $page)) {
echo "远程 URL 不允许呦。";
exit;
}
if (file_exists($target)) {
$content = file_get_contents($target);
echo "<pre>" . htmlspecialchars($content, ENT_QUOTES|ENT_SUBSTITUTE, 'UTF-8') . "</pre>";
} else {
if (@file_exists($page)) {
$content = file_get_contents($page);
echo "<pre>" . htmlspecialchars($content, ENT_QUOTES|ENT_SUBSTITUTE, 'UTF-8') . "</pre>";
} else {
echo "No!: " . htmlspecialchars($page);
}
}
?>
解题步骤
- 分析代码发现存在文件包含功能
- 虽然过滤了http/https协议,但未有效防止目录遍历
- 使用payload:
?page=../flag.txt读取flag
关键技术点
- 目录遍历攻击:使用
../跨越目录边界 - 文件包含漏洞:未对输入路径进行规范化处理
防御方案
- 使用
basename()函数获取文件名 - 使用白名单机制限制可访问文件
- 对输入路径进行规范化处理
5. PolarCMS
考察点:认证绕过与模板注入
解题步骤
- 登录页面存在弱密码漏洞,可通过爆破或SQL注入绕过
- 发现密码正确时用户名任意均可登录(设计缺陷)
- 登录后存在文件上传和页面创建功能
- 在创建页面处尝试模板注入:
${exec('cat /f*')}
关键技术点
- 认证逻辑缺陷:密码验证与用户身份验证分离
- 服务端模板注入(SSTI):在模板中执行系统命令
- Java环境下的命令执行
防御方案
- 实现完整的认证机制
- 对用户输入进行严格过滤
- 避免在模板中执行用户输入
6. 狗黑子的舔狗日记
考察点:文件包含与PHP伪协议利用
源码分析
关键代码段:
if (isset($_GET['page'])) {
$requestedPage = $_GET['page'];
$baseDir = dirname(__FILE__);
if (strpos($requestedPage, 'php://') === 0) {
if (preg_match('/resource=([^&]+)/', $requestedPage, $matches)) {
$resource = $matches[1];
$resource = urldecode($resource);
if (strpos($resource, '/') !== false || strpos($resource, '\\') !== false || strpos($resource, '..') !== false) {
die("不支持其他操作");
}
include($requestedPage);
exit;
}
}
// ... 其他验证逻辑
}
$flag='ZmxhZ3vlpbPnpZ7nmoTlkI3lrZdtZDXliqDlr4Z9CnRpcHMgIOWls+elnuW+ruS/oeWPt++8mm52c2hlbg==';
解题步骤
- 发现page参数可用于文件读取
- 使用PHP伪协议读取index.php:
?page=php://filter/convert.base64-encode/resource=index.php - 获取base64编码的flag并解码
- 解码后提示:
flag{女神的名字md5加密} tips: 女神微信号:nvshen - 扫描目录发现www.zip(密码本)
- 爆破登录女神微信,发送消息获取名字
关键技术点
- PHP伪协议利用:
php://filter读取文件内容 - 目录遍历与敏感文件发现
- 密码爆破与身份伪装
防御方案
- 禁用不必要的PHP伪协议
- 对文件包含路径进行严格限制
- 避免将敏感文件存放在web目录
7. Squirtle的论坛
考察点:Cookie伪造与权限绕过
解题步骤
- 扫描目录发现admin.php,但提示无权限访问
- 主页面提示"master只能是Squirtle!!!"
- 尝试设置Cookie:
master=Squirtle - 访问admin.php成功,上传一句话木马执行命令
关键技术点
- Cookie身份验证绕过:通过伪造特定Cookie值获取权限
- 文件上传漏洞:上传Webshell获取系统权限
防御方案
- 使用安全的会话管理机制
- 对Cookie进行签名或加密处理
- 文件上传功能应验证文件类型和内容
8. 老刘的小店
考察点:业务逻辑漏洞与自动化利用
解题步骤
- 注册登录后发现需要10000金币兑换目标物品
- 系统限制每分钟只能获取三个金币
- 但可以向其他账户转账金币
- 编写自动化脚本注册多个账户并向主账户转账
关键技术点
- 业务逻辑漏洞:转账功能缺乏限制
- 自动化攻击:通过脚本批量操作
- 时间窗口利用:绕过时间限制机制
防御方案
- 实施交易频率限制
- 添加验证码机制防止自动化
- 对异常交易行为进行监控
9. 狗黑子的eval
考察点:代码混淆与动态执行
解题步骤
- 扫描目录发现flag.php和shell.php
- flag.php提示查看payload.php
- 注释提示:gou=a,gougou=b(即2gou=b,3gou=c,依此类推)
- 将代码中的gou变量替换为对应字母
- 发现
$gou7base64解码为"stgo" - 重组后得到"evalpostgoubaizi",推测为shell.php的参数
- 使用蚁剑连接,通过插件绕过权限执行命令
关键技术点
- 代码混淆与解码:理解变量命名规律
- 动态代码执行:eval函数的安全风险
- 权限绕过技术:Webshell工具的高级使用
防御方案
- 避免使用eval等动态执行函数
- 实施严格的输入验证
- 使用Web应用防火墙(WAF)
10. 狗黑子的登录
考察点:Git信息泄露与文件上传漏洞
解题步骤
- 扫描目录发现.git文件夹
- 使用GitHack工具下载源码:
python GitHack.py http://target/.git/ - 获取index.php和admin.php源码
- index.php中发现
seclients_can_register=1参数可开启注册功能 - admin.php存在文件上传漏洞,仅验证Content-Type
- 修改Content-Type为
image/png上传PHP文件
关键技术点
- Git信息泄露:通过.git文件夹获取源码
- 参数开启隐藏功能:设计缺陷
- 文件上传绕过:修改Content-Type头
防御方案
- 禁止访问.git目录
- 生产环境应关闭调试功能
- 文件上传应验证文件内容和魔术字
11. ZGZH
考察点:序列化漏洞与科学计数法绕过
解题步骤
- 需要编写Python脚本进行用户对象序列化
- 提示验证密码,访问pass.php
- 使用科学计数法绕过:传入
857.00E+000
关键技术点
- 对象序列化攻击:构造恶意序列化数据
- 科学计数法绕过:利用PHP类型转换特性
- 浮点数精度问题:数值比较漏洞
防御方案
- 避免反序列化不可信数据
- 使用严格类型比较(===)
- 实施输入验证和过滤
综合防御建议
1. 输入验证与过滤
- 实施白名单机制,只允许预期的输入格式
- 对所有用户输入进行规范化处理
- 使用预处理语句防止SQL注入
2. 身份认证与会话管理
- 实施强密码策略和多因素认证
- 使用安全的会话管理机制
- 避免在URL或Cookie中暴露敏感信息
3. 文件操作安全
- 限制文件操作范围到指定目录
- 禁用不必要的PHP伪协议
- 对文件路径进行规范化处理
4. 错误处理与日志记录
- 避免向用户暴露详细错误信息
- 记录安全事件用于审计和监控
- 实施实时监控和告警机制
5. 安全开发生命周期
- 进行代码安全审计和渗透测试
- 实施安全编码培训和教育
- 建立漏洞管理和应急响应流程
工具推荐
- Burp Suite:Web应用渗透测试集成平台
- GitHack:.git文件夹利用工具
- AntSword:中国蚁剑,Webshell管理工具
- DirBuster:目录扫描工具
- SQLMap:SQL注入自动化工具
本教学文档涵盖了Polar 2025秋季挑战赛Web题目的详细解法和关键技术点,旨在帮助学习者深入理解Web安全漏洞的原理、利用方式和防御措施。