2025PolarCTF夏季挑战赛个人WP-misc部分复现

秘密的消息

第一层

@^bp^o,根据背景,凯撒解密

mode2 移位3时拿到密钥: Caesar

第二层

👉👦👤👘

一眼base100,解密拿到密码

第三层

一眼base64,解密拿到flag

狂热粉丝

双击ovf文件打开虚拟机

题1

1.黑客在虚拟机内使用什么交流的?

查看浏览器历史记录:

image-20250623174252900

Tinode

题2

2.黑客传输的木马名为什么?

在Program目录下有一个很特殊的exe文件:
image-20250623174642347

NewWorld.exe

题3

3.黑客使用什么语言编程的木马?

查看源码得知为python

python

题4

4.黑客搭建网站的IP是多少?

查看历史记录得知ip

image-20250623175512765

题5

5.黑客木马勒索加密了什么文件?、

查看program目录下的main.py文件

得知是加密了cmd.exe文件:

image-20250623174930407

题6

6.黑客的内部群聊地址是多少

github上搜索Tinode源码,搭建Tinode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
docker network create tinode-net

docker run --name mysql --network tinode-net --restart always \
--env MYSQL_ALLOW_EMPTY_PASSWORD=yes -d mysql:5.7

docker run -p 6060:6060 -d --name tinode-srv --network tinode-net \
tinode/tinode-mysql:latest

docker cp ***.sql mysql:/tmp/init.sql

docker exec -it mysql bash

mysql -u root

CREATE DATABASE tinode;
USE tinode;

SOURCE /tmp/init.sql;

exit;

image-20250623183321211

image-20250623183254281

grp93xtyNFZXes

jumpsever

根据题目,附件为完整虚拟机,且是jumpserver开源堡垒机

启动堡垒机:

1
2
cd /opt/jumpserver-installer-v4.8.1
./jmsctl.sh start

启动后访问客户端:弱密码:admin/123456

题1

1.攻击者的ip

审计台查看登录日志

发现攻击者ip:

image-20250623161902954

flag{192.168.20.1}

题2

2.攻击者第一次攻击的时间

如题一:

flag{2025/04/07 19:27:39}

题3

3.Flag标签的md532小写值

image-20250623162422959

flag{7976e84b35681b027b711652dc0a3ed3}

题4

4.网站的用户数量

image-20250623162617976

flag{6}

题5

5.连接员工信息资产的账号有多少

image-20250623162608238

flag{2}

最爱的专辑

题目给的base64解码结果为:我爱火星哥

deepsound发现隐藏加密文件,解密拿到压缩包

image-20250624153519548

拿到apt.jpg和短信信息文件夹

图片中发现压缩包

image-20250624153936341

解压密码就是短信信息了

提示九键,尝试九键解密

image-20250624154337086

解压密码是Bruno Mars

为什么关机又关机

bat中是关机脚本。很明显下面有0宽隐写

image-20250624155241355

但是常见网址无法解密,在特殊网站可以解密文字隐藏加密/解密 - 蜻蜓在线工具

image-20250624155553940

解密后拿到exe,文件属性有问题

image-20250624155707415

最后的jpg使用steghide隐写,密码为图片中威力的计算结果160

image-20250624160635170

1
2
steghide extract -sf 女王威力很强奥.jpg -p "160"
wrote extracted data to "flag.txt".

doro

提取出gif的帧间隔,可以发现帧间隔存在60和30

1
['60', '30', '30', '30', '60', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '60', '30', '30', '30', '30', '60', '30', '60', '30', '30', '60', '30', '30', '30', '60', '30', '30', '30', '60', '60', '60', '30', '60', '60', '60', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '30', '60', '60', '60', '60', '30', '30', '30', '30', '60', '60', '60', '30', '30', '30', '30', '60', '30', '30', '30', '30']

并且帧的个数和房间号相匹配。将帧为60的房间号提取出来。

1
0,4,15,20,22,25,29,33,34,35,37,38,39,57,58,59,60,65,66,67,72

hint中提到2025年5月1日0时,注意到文件的修改时间很特殊,用其时间戳做差,转为ASCII码,提取出来帧为60的房间号对应的ASCII码

image-20250624162040673

最后拿到结果:

1
dorolikestoeatoranges

解压拿到flag

image-20250624162258626