CTF刷题-misc(1)

本文最后更新于 2026年3月29日 晚上

题目来源:CTFShow

misc2

题目描述:偶然发现我竟然还有个软盘,勾起了我的回忆。

解压附件得到file,根据题目描述,这应该是一个软盘文件。思路为用虚拟机挂载后再打开。

虚拟机创建方式不唯一,这里使用VMware Workstation Pro。

打开VMware,创建新的虚拟机,配置选自定义,操作系统选稍后安装操作系统,然后选其他,其余没提到的全都保持默认,直接下一步。

只是做简单的挂载,不用考虑太多

当画面变成上图这样时,依次点击自定义硬件 -> 添加 -> 软盘驱动器 -> 完成,然后在右侧连接一栏中选使用软盘映像文件,通过浏览定位到file的位置,打开,完成。

注意右下角要选所有文件,不然找不到file

之后只要开启虚拟机就能看到flag了🎉

开机即食

flag{ctfshow}

miscx

拿到手是一个rar压缩文件,用Bandizip打开,看到两个加密的txt和一个misc1.zip,下方有两行提示

1
2
2020快乐!
rat?or?

先单独解压出这个zip,点开看一下,里面有一个未加密的png和一个加密的doc文档。

png图片CRC报错,修复后只是一句祝福语。末尾有一个flag{flag_1s_n0t_h3r3},再就没东西了。这里一度怀疑哪里有遗漏,后来考虑到图片本身可能就是信息,结合2020快乐的提示,猜测doc文档密码为2020。成功解锁。

密码直接告诉你了不用?

文档的内容是这样一串

1
♭‖♭‖‖♯♭♭♬‖♩♫‖♬∮♭♭¶♭‖♯‖¶♭♭‖∮‖‖♭‖§♭‖♬♪♭♯§‖‖♯‖‖♬‖‖♪‖‖♪‖¶§‖‖♬♭♯‖♭♯♪‖‖∮‖♬§♭‖‖‖♩♪‖‖♬♭♭♬‖♩♪‖♩¶‖♩♪‖♩♬‖¶§‖‖♩‖¶♫♭♭♩‖♬♯‖♬§♭‖♭‖♩¶‖‖∮♭♭♬‖‖♭‖♫§‖¶♫‖♩∮♭♭§‖♭§‖♭§§=

想到音符解密,使用千千秀字提供的在线工具解码为

1
U2FsdGVkX1/eK2855m8HM4cTq8Fquqtm6QDbcUu4F1yQpA== 

注:音符解密的在线工具现在已经无法使用了,当doc文档写的就是解密后的结果就行

新的密文开头U2FsdGVkX1 是 CryptoJS 库默认的加密输出前缀,结合rat?or?的提示,推测是rabbit加密,密钥试试2020。

rabbit在线解密网站

解密后得到

1
welcome_to_payhelp

用这个作为密码尝试解锁两个txt,只能解锁hint.txt。内容为

1
VmpKMFUxTXhXWGxVV0dob1RUSjRVVll3V2t0aFJscDBZMGhLYTAxWGVIaFZiRkpUWWtaYVZWSnJXbFpOVjJoeVZYcEdZVkpzVG5KVWJHaHBWa1ZWZDFkV1ZtRmtNRFZYVjJ4c2FWSlVWbFJVVnpWdVRXeFZlV1ZHVGxSaVZrWTBXVlJPYzFWR1pFZFRiVGxYWW01Q1dGcEdXbE5UUjBZMlVXMTBWMWRGU2xkV1ZtUXdVekpGZUZOWWJHaFRSVFZWV1d0YVMxTXhjRVZUYTFwc1ZteHdlRlp0ZERCV01VcFlaRE53V0Zac2NIWldSekZMVW1zeFdWSnNTbWxXUjNodlZtMXdUMkl5Vm5OaVNGWnBVbXh3YzFac1VrZFNiRlY0WVVkMFZXSlZXbmxWYlRWUFZsWlplbEZyWkZSaVJrcFFWV3hGYkUwd1VXeE5NRkVsTTBRJTNE

经过不断尝试,经过六次base64解密后得到

1
welcome_to_2020%0Aflag%20is%20coming...%0Athe%20key%20is%20hello%202020%21Ü

再进行一次URL解密。得到如下内容

1
2
3
welcome_to_2020
flag is coming...
the key is hello 2020

去掉末尾的乱码Ü,得到最后的key

1
hello 2020!

用这个key解锁flag.txt,拿到flag。

flag{g00d_f0r_y0u}

misc50

解压附件后是一张png。老规矩,扔进010,翻到最后发现PK标志,于是查找50 4B 03 04定位PK文件头,在文件头附近位置发现IEND前有一段密文

1
Sk5DVlM2Mk1NRjVIU1gyTk1GWEgyQ1E9Cg==

base64一下得到

1
JNCVS62MMF5HSX2NMFXH2CQ=

全大写字母加上数字2-7,所以再base32一次,得到

KEY{Lazy_Man},先留着,这是一会要用到的妙妙工具。

回到010中,以刚才找到的PK文件头为新的起点,把从这开始的数据复制到一个新文件中并修改扩展名为.zip,打开,发现一个fbi.rar。

用Bandizip打开,里面有一个flag.zip,并在下方发现了提示

1
GEZDGNBVGYFA====

base32一下得到123456

再打开flag.zip,是一个加密的thienc.txt。试试密码123456,还真对了,送分题这一块🔑

这个txt的内容是一堆数字,这里截取前500位

1
30783337307837613078626330786166307832373078316330783030783430783462307862653078346430783162307830307866333078313430783030783030783030783030783030783732307830307830307830307830307830307830307830307834643078343830783461307832373078613078633530783732307836313078653130783939307861623078346430783939307832373078383930783738307838633078643030783262307861613078316530786630307837643078366430783339307866353078633530783533307832333078656230786363307835323078363330783862307832343078336530786466307864613078

观察一下发现这堆数字的规律是3078xxxx3078xxxx这样的,3078在ASCII码中表示0x,说明这其实是一堆十六进制的数据。

直接把txt的内容复制到CyberChef,用From Hex就可以把数据转换成0x形式。再用一次From Hex,就能翻译出我们熟悉的内容。

赛博厨子的恩情还不完

这里能看出文件头为7z,直接用网站自带的保存功能将转化后的数据保存为一个.7z文件,用Bandizip打开。里面是个加密的txt。

这时候就用到之前的妙妙工具了,输入 KEY{Lazy_Man} 打开txt,又出来一堆东西,足足有10598200个字符😰

不惯着它,看到Sk开头,==结尾,直接base64加base32一套丝滑小连招…吗?

根本带不走!试了好久都没结果,用ai也干不出来,您猜怎么着,这玩意要解密15次才能出结果:

base64 -> base32 -> base32 -> base32 -> base32-> base64 -> base32 -> base32 -> base32 ->base32 -> base64 -> base32 -> base32 -> base32 -> base32

这么大数量还是别为难赛博厨子了,祭出脚本!

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
32
33
34
35
36
37
38
39
40
41
42
43
44
import base64

def solve_crypto(file_path):
try:
# 读取原始文件内容
with open(file_path, 'r', encoding='utf-8') as f:
data = f.read().strip()

# 定义循环结构:3次大循环
# 每次大循环包含:1次 Base64 + 4次 Base32
for big_loop in range(3):
print(f"正在进行第 {big_loop + 1} 组大循环解密...")

# 1. 解码 Base64
# 加上 padding 处理,防止因格式问题报错
missing_padding = len(data) % 4
if missing_padding:
data += '=' * (4 - missing_padding)
data = base64.b64decode(data).decode('utf-8', errors='ignore').strip()
print(f" - Base64 解码完成")

# 2. 解码 4次 Base32
for i in range(4):
# Base32 同样处理 padding
missing_padding = len(data) % 8
if missing_padding:
data += '=' * (8 - missing_padding)
data = base64.b32decode(data).decode('utf-8', errors='ignore').strip()
print(f" - 第 {i + 1} 层 Base32 解码完成")

# 将最终结果保存
with open('flag_decoded.txt', 'w', encoding='utf-8') as f:
f.write(data)

print("\n[成功] 所有15层解密完成!结果已保存至 flag_decoded.txt")
print("预览前50个字符:", data[:50])

except Exception as e:
print(f"\n[错误] 解密过程中出现问题: {e}")
print("请检查数据格式或循环层数是否准确。")

if __name__ == "__main__":
# 确保 secenc.txt 与脚本在同一目录下
solve_crypto('secenc.txt')

运行后得到flag_decoded.txt,是一堆由 .?! 组成的东西,这是OoK!语言,而且是Short Ook!。既然识别出了加密方式,就乘胜追击使用在线工具解决。

在此之前为了确保Short Ook!格式正确,要祭出第二个脚本清洗数据

1
2
3
4
5
6
7
8
9
10
11
12
# 读取你的原始符号文件
with open('flag_decoded.txt', 'r', encoding='utf-8') as f:
content = f.read()

# 去除所有换行符、回车符以及空格
clean_content = content.replace('\n', '').replace('\r', '').replace(' ', '')

# 将清洗后的纯符号保存
with open('clean_ook.txt', 'w', encoding='utf-8') as f:
f.write(clean_content)

print(f"清洗完成!共处理 {len(clean_content)} 个符号。")

清洗后得到clean_ook.txt,复制里面所有内容到在线网站

戳我直达

先进行一次Ook! to Text,得到

1
2
3
4
5
6
7
8
+++++ +++++ [->++ +++++ +++<] >++.+ +++++ .<+++ [->-- -<]>- -.+++ +++.<
++++[ ->+++ +<]>+ +++.< +++++ +[->- ----- <]>.< +++[- >+++< ]>+++ ++.++
+++++ .---- ----- .<+++ ++++[ ->--- ----< ]>--. <++++ +++[- >++++ +++<]
>++++ +++++ +++.- ----- --.-- ----. <++++ [->++ ++<]> +++++ .<+++ +++[-
>---- --<]> -.<++ ++[-> ++++< ]>.++ ++.<+ ++[-> ---<] >---- --.<+ +++[-
>++++ <]>++ .---- ---.< +++++ +[->- ----- <]>-- ----- -.<++ +++++ [->++
+++++ <]>++ ++.++ +++++ .++++ ++++. <++++ +++++ [->-- ----- --<]> -----
.<+++ +++++ +[->+ +++++ +++<] >++++ +++++ ++.<

这是Brainfuck,所以再用一次Brainfuck to Text,拿到flag。

flag{Welc0me_tO_cTf_3how!}

stega1

一张相当干净的jpg图片,无论是图片属性图片结构还是图片内容都干净得无可挑剔,Steghide和Outguess也查不出有用的数据

这时候我们需要请出jpg内部隐写杀的手锏-JPHS,它专门针对 JPEG 的 DCT(离散余弦变换) 系数进行操作,经JPHS处理过的信息隐蔽性极高,binwalk 和普通的 strings 根本检测不到。这里直接分享出这个工具⬇️

双击启动Jphswin.exe,在open jpeg中打开jpg图片,就可以进行信息的隐藏和提取。本题中直接点seek,不用输入任何东西直接点OK,然后随便起个文件名,保存为txt后打开即可看到flag。

flag{3c87fb959e5910b40a04e0491bf230fb}

misc40

附件直接解压失败了。用Bandizip打开发现有一个wav文件被加密了,那就先解压出其余的文件。

提取后拿到一张普通的二维码.png,svega.mp3和conversion.txt。

png二维码扫描后是一句flag不在这里哦~~,可能里面确实没有flag,但里面没东西的可能性接近0。扔进010看一眼,发现末尾附加了一段BrainFuck。

1
++++++++[>>++>++++>++++++>++++++++>++++++++++>++++++++++++>++++++++++++++>++++++++++++++++>++++++++++++++++++>++++++++++++++++++++>++++++++++++++++++++++>++++++++++++++++++++++++>++++++++++++++++++++++++++>++++++++++++++++++++++++++++>++++++++++++++++++++++++++++++<<<<<<<<<<<<<<<<-]>>>>>>>>>>>>>>>+++++.<<<<<++.------.>>>>>+++.<<<.<<++++.>>>>>--.<<<.<<+.>>>>>--.<<<++++++++.+++.>>>+.<<<<<+.------.>>>>>+++.<<<-----------.<<++++.>>>>>--.<<<<<++++++.<+++++++.>>>>>>.<<<<<++.<+++++++.>>>>>>-.<<<<<<++++.------.>>>>>>+++.<<<.<<<++++.>>>>>>---.<<<<<<++.------.>>>>>>+++.<<<.<<<++++.>>>>>>---.<<<<<<++.------.>>>>>>+++.<<<.<<<++++.>>>>>>.<<<<<<---------.>>>------.>>>-.<<<<<----.>>+++++++.>>>--.<<<<<--.<+++++.>>>>>>+++.<<<-.<<--.>>>>>---.<<-------.<+++.>>>++.<<<------.<<<---.>>>>>>--.<<<<<++.<+++.>>>>>>+++.<<<+++.<<--.>>>>>---.<<<<<<-------.>>>----.>>>+.<<<+.<+++.

还是去下面这个网站解密:

戳我直达

解密后得到

1
和谐民主和谐文明和谐和谐和谐自由和谐平等和谐公正

核心价值观解密,用随波逐流就能解。最后得到

1
123456

看到svega.mp3,想到要用MP3Stego来提取数据。正好MP3Stego需要密码,这不就对上了。

复制svega.mp3到MP3Stego根目录,在此处开启Powershell并运行以下命令:

1
.\Decode.exe -X -P 123456 svega.mp3

根目录下会生成一个svega.mp3.txt,双击打开就能看到隐藏的提示

1
2
3
hint:静默之眼
对了~另一个音乐的密码是abc123哦
你马上就成功了!

这里提到的静默之眼是另一个工具silent eye,我们需要用这个工具解密最后的wav文件。虽然它是32位操作系统的可执行文件,但在64位操作上也能正常运行。

在此之前先用密码abc123svega.wav解压出来,然后下载并安装silent eye。安装过程中记得勾选wav。

这时候突然想起来还有个txt没用上,打开看一眼

1
2
3
110001010100011101

2>4>8>10

2>4>8>10意义不明,感觉就是进制二转十,计算一下得到202013,猜测这是silent eye解密的密钥。

打开silent eye导入要解密的wav后,按照下图所示设置进行解密:

密钥要输入两次哦

flag{C0ngr4tul4ti0n!}

misc30

内含有一个加密mp3的zip,没找到有关密码的任何提示。先爆破试试,失败,扔进010尝试伪加密解法。

如图所示将光标位置的数字改成0(原来是3),ctrl+s保存后,就可以发现密码保护消失了

直接定位核心目录区,数9到10个字节

解压出mp3文件,听一下,是个比较劲爆的音乐,听不出问题;MP3Stego也没提取出东西。扔进010看一眼,好家伙里面塞了张图片,是个jpg

万物皆可藏

分离出来看看,干净得很,手里的检测工具都没扫出问题。既然这样,还有很简单但容易被忽视的一招:改高度。

010 editor中打开图片,在前300字节范围内查找FF C0(SOF0 标记头),没找到,说明这张jpg使用 FF C2(渐进式扫描)。FF C2出现在约160字节,其后第4、5字节代表高度,为01 73,随便改个更大的数字,比如改成0273。保存后重新打开jpg,可以看到隐藏信息

jpg改高度就是阴啊

下面那八个奇怪的符号是猪圈密码,上网搜个对照表翻译一下就是flag(记得加空格)

对号入座

flag{well done}


CTF刷题-misc(1)
https://koyanrush.github.io/2026/02/02/CTFShowmisc1/
作者
Koyanrush
发布于
2026年2月2日
许可协议