2024 polarctf 冬季个人挑战赛 web wp
字数 1173 2025-08-22 18:37:15
PolarCTF 2024 冬季个人挑战赛 Web 题目解析与教学文档
1. 简单的导航站
题目考点
- MD5强绕过
- 文件上传漏洞
- Burp Suite爆破模块使用
解题步骤
-
注册账号:首先尝试注册一个普通用户账号
-
MD5强比较绕过:
- 发现系统使用MD5强比较验证用户
- 使用特殊构造的MD5碰撞字符串:
user1=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%00%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1U%5D%83%60%FB_%07%FE%A2 user2=M%C9h%FF%0E%E3%5C%20%95r%D4w%7Br%15%87%D3o%A7%B2%1B%DCV%B7J%3D%C0x%3E%7B%95%18%AF%BF%A2%02%A8%28K%F3n%8EKU%B3_Bu%93%D8Igm%A0%D1%D5%5D%83%60%FB_%07%FE%A2
-
爆破管理员账号:
- 在首页发现密码提示
- 使用Burp Suite爆破,发现管理员用户名为:
P0la2adm1n
-
文件上传:
- 以管理员身份登录后进入文件上传功能
- 上传一句话木马
- 使用蚁剑连接获取webshell
-
获取flag:
- 发现系统中有多个flag文件
- 使用flag认证系统爆破获取最终flag
2. 井字棋
解题步骤
- 查看网页源码
- 发现可以通过给
who参数赋值来直接获胜 - 构造请求修改
who参数值
3. 狗黑子的RCE
题目代码
<?php
error_reporting(0);
highlight_file(__FILE__);
header('content-type:text/html;charset=utf-8');
$gouheizi1 = $_GET['gouheizi1'];
$gouheizi2 = $_POST['gouheizi2'];
$gouheizi2 = str_replace('gouheizi','',$gouheizi2);
if(preg_match("/ls|dir|flag|type|bash|tac|nl|more|less|head|wget|tail|vi|cat|od|grep|sed|bzmore|bzless|pcre|paste|diff|file|echo|sh|n|\t|\r|\xA0|d]i",$gouheizi1)){
echo("badly!");
exit;
}
if($gouheizi2 === "gouheizi"){
system($gouheizi1);
}
else{
echo "gouheizi!";
}
?>
解题步骤
-
第一关:使用双写绕过过滤
- 例如:
llss会被处理为ls
- 例如:
-
第二关:使用反斜杠绕过
- 例如:
c\at可以绕过cat的过滤
- 例如:
4. xxmmll
解题步骤
- 检查响应头,发现一个PHP文件地址
- 判断为XML文件读取漏洞(XXE)
- 构造XXE攻击payload:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
<!ELEMENT name ANY >
<!ENTITY xxe SYSTEM "file://flag" >
]>
<root>
<name>&xxe;</name>
</root>
5. 赌王
解题步骤
- 爆破尝试获取提示
- 访问提示文件
ed3d2c21991e3bef5e069713af9fa6ca.php - 发现输入框,尝试XSS
- 根据提示使用
confirm弹窗 - 访问
e744f91c29ec99f0e662c9177946c627.php - 需要伪造IP为
1.1.1.1才能执行命令- 使用HTTP头
X-Forwarded-For: 1.1.1.1
- 使用HTTP头
6. 任务cmd
解题步骤
- 检查响应头获取线索
- 爆破密码
123123成功 - 根据源码提示将
id参数改为xiaohei - 目录扫描发现
login.php - 爆破密码
flower成功 - 根据题目猜测参数为
cmd执行命令
7. 坦诚相见
解题步骤
- 发现可执行命令但有WAF限制
- 查看
no.php文件发现WAF规则 - 删除WAF文件:
rm no.php - 使用sudo权限查看flag:
sudo cat /f*
防御建议
-
MD5比较:
- 避免使用简单的MD5比较
- 使用加盐哈希或更安全的哈希算法如SHA-256
-
文件上传:
- 限制上传文件类型
- 检查文件内容而不仅是扩展名
- 将上传文件存储在非web可访问目录
-
命令执行:
- 避免直接使用用户输入执行系统命令
- 使用白名单过滤而非黑名单
- 对特殊字符进行严格过滤
-
XXE防御:
- 禁用外部实体加载
- 使用简单的XML解析器
-
认证安全:
- 使用强密码策略
- 实施账户锁定机制
- 使用多因素认证
-
输入验证:
- 对所有用户输入进行严格验证
- 使用参数化查询防止SQL注入
-
日志与监控:
- 记录所有敏感操作
- 设置异常行为警报