PolarCTF 2025春季挑战赛
2025-06-07 00:00:00 # CTF

PolarCTF 2025春季赛Web部分wp

复读机RCE

题目环境很简单,一个输入框

image-20250606220638195

输入内容后,发现执行完回显这是内部消息,我不能说,你只能自己找

抓包看看

image-20250606220731334

根据参数名cmd可以猜测一下是执行了某条命令,但是没有回显,尝试写入文件

image-20250606220818501

执行完后回显也发生了变化,浏览一下刚才的文件1.txt

image-20250606220905946

通过执行命令后写入文件的方式获取执行结果

image-20250606221841628

根目录下flag

image-20250606221902846

flag{12400320-EBCD-D827-09A8-B0D909863DB7}

xCsMsD

比较迷惑的一道题,好像没xss什么事……

image-20250606222909171

先是一个注册&登录的框,那就注册和登录,用户名和密码随便

image-20250606222948551

image-20250606222956026

登录以后是上面两个功能,有cmd先看cmd

image-20250606223025964

确实有回显,但是尝试后发现ls+/没用,抓包看看

image-20250606223152368

cookie中有一段编码,解码后是' '->'-', '\'->'/',猜测是用-代替空格,用\代替/

image-20250606224409270

ok,获取flagflag{e9964d01bda263f9aa86e69ce5bdfb47}

image-20250606224438794

最后看了下xss_cmd.php的源码,好像真没xss什么事,也对命令做了一些过滤

image-20250606224921234

coke的登录

也很迷,翻到请求包里cookie有值,直接用作密码登录

image-20250606225805530

bllbl_rce

image-20250606230019760

抓包分析

image-20250606230045623

尝试了一遍不论输什么回显都是no,再看一下题目bllbl_rce,直接输入

image-20250606231028567

回显变了,说明这个很特殊,尝试在后边直接拼接命令

image-20250606231145373

成了,获取flagflag{86bef3c8c8dacf54b1726ccd2fb6a7d7}

image-20250606231220951

看一下源码,只是对字符串是否含有bllbl进行了判断

image-20250606231417425

椰子树晕淡水鱼

image-20250606231742101

点提示

image-20250606231758397

藏头诗文件包含,加上URL的样子,应该没跑了

尝试了一遍伪协议没有用,扫目录找到了还有admin.php、password

image-20250606233650914

password是个压缩包,被加密了,爆破出密码是0606,解开压缩包是一个密码字典

image-20250606233958694

登陆爆破,题中关于页面说了是由zhsh贡献,用户名admin爆破失败后用zhsh尝试成功

image-20250606234617712

登录后是个文件上传页面

image-20250606234729964

结合文件包含,想到这里可以用文件包含webshell

image-20250606234836969

掉坑里了,好像不是文件包含,,,抓包修改Content-Typeimage/jpeg竟然直接传上去php文件了,,,

image-20250606235714927

image-20250606235818568

获取flag flag{0aa3870e09b1e0210d050891a274ecb9}

这里再看下源码givemeaimage.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// 文件上传处理逻辑
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 允许的 Content-Type 类型
$allowed_content_types = ['image/jpeg', 'image/png', 'image/gif'];

// 获取文件的 Content-Type
$file = $_FILES['file'];
$content_type = $_FILES['file']['type']; // 获取文件的 Content-Type

// 检查文件的 Content-Type 是否在允许的范围内
if (in_array($content_type, $allowed_content_types)) {
// 不检查文件的后缀名,直接使用上传的文件名
$upload_path = 'uploads/' . basename($file['name']);
if (move_uploaded_file($file['tmp_name'], $upload_path)) {
echo "<p class='success-message'>文件上传成功: " . htmlspecialchars($upload_path) . "</p>";
} else {
echo "<p class='error-message'>文件上传失败,请重试。</p>";
}
} else {
echo "<p class='error-message'>只允许上传图片文件 (JPEG, PNG, GIF)。</p>";
}
}
?>

这里确实是只对Content-Type作了校验,再看下index.php

1
2
3
4
5
6
7
8
9
10
GIF89a
<?php
$page = isset($_GET['page']) ? $_GET['page'] : 'home';

if ($page == 'home') {
include('home.php');
} else {
include($page . '.php');
}
?>

这里文件包含添加了php后缀,怪不得一直包含图片文件不成功……