目录
[[MRCTF2020]Hello_ misc](#[MRCTF2020]Hello_ misc)
[ACTF新生赛2020]base64隐写

得到附件

脚本运行

flag{6aseb4_f33!}
[ACTF新生赛2020]music

得到附件vip.m4a
放进010中发现有很多A1

使用二进制异或


得到了正常的音频

听音频得到:actfabcdfghijk
flag{abcdfghijk}
[ACTF新生赛2020]NTFS数据流

下载附件得到

用WinRAR打开并解压,得到文件tmp,再次用WinRAR解压flag.rar

涉及NTFS流的都需要Win RAR解压
解压完之后,使用NtfsStreamsEditor工具扫描flag文件

导出文件,得到flag

[ACTF新生赛2020]outguess

得到附件

mmm.jpg

查看属性发现备注

解密得到abc

flag.txt

在根据题目为outguess,可知是outguess隐写
outguess解密命令:
outguess -k 'key' -r 输入文件 输出文件

得到flag

[ACTF新生赛2020]swp

下载附件并解压 得到wget.zip 再次解压 得到流量包
文件--导出对象--HTTP

在导出的文件中发现一个压缩包

第一种情况:用7-Zip打开压缩包--用记事本打开.flag.swp
找到flag

第二种情况:
使用其他压缩软件打开 发现需要密码 是伪加密

用010打开 将伪压缩文件恢复到未加密

修改后解压 用记事本打开.flag.swp 得到flag

[ACTF新生赛2020]明文攻击

得到两个文件

题目提示是明文攻击,需要找和压缩包中相同的文件
将图片放到010,发现flag.txt文件,并且压缩包的文件头被修改了,将其修改回来

然后将图片分离,解压压缩包,得到flag.txt

对比两个flag.txt文件,发现CRC32是一样的,可以进行明文爆破

使用工具ARCHPR,选择攻击类型为明文
点击开始后,运行一段时间,再暂停就行,不用让它跑完

点击确定,保存压缩包

打开secret.txt文件,得到flag

ACTF{3te9_nbb_ahh8}
[MRCTF2020]CyberPunk

运行程序 发现有个时间2020.9.17

更改时间

再次运行程序得到flag

[MRCTF2020]Hello_ misc

得到两个附件

先看图片

先到Stegsolve.jar里,在Red0发现png图片数据,Save Bin保存图片为png文件

得到zip-password密码:!@#$%67*()-+

用010打开try to restore it.png,在末尾找到了PK,所以里面有zip文件

foremost分离
得到一个加密的压缩包,密码为:!@#$%67*()-+,得到out.txt

def decode_msb2(data):
"""
2位高位隐写 解码函数
:param data: 隐写后的数字列表
:return: 解码后的明文
"""
bits = []
for num in data:
# 取每个数字的 最高2位 (右移6位)
high2 = (num >> 6) & 0b11
bits.append(f"{high2:02b}")
# 拼接比特并按8位转字符
bit_str = "".join(bits)
result = []
for i in range(0, len(bit_str), 8):
byte = bit_str[i:i+8]
if len(byte) == 8:
result.append(chr(int(byte, 2)))
return "".join(result)
def read_numbers_from_txt(file_path):
"""
从txt文件中自动提取所有数字(无视逗号、空格、换行)
"""
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
# 提取所有数字(自动过滤符号、空格、换行)
import re
numbers = list(map(int, re.findall(r'\d+', content)))
return numbers
if __name__ == "__main__":
# 自动读取 out.txt 中的所有数字
file_name = "out.txt"
your_stego_data = read_numbers_from_txt(file_name)
# 解码并输出结果
decoded_text = decode_msb2(your_stego_data)
print("✅ 从 out.txt 提取的数字:", your_stego_data)
print("🔓 隐写解码结果:", decoded_text)

得到rar-passwd:0ac1fe6b77be5dbe
是flag.rar的解压密码
打开fffflag.docx,CTRL+A全选,改变文字颜色

https://github.com/jerrita/b64steg
python b64steg.py -f flag.txt -s output.txt

flag{He1Lo_mi5c~}
[MRCTF2020]pyFlag

附件

放到010,发现每个图片的末尾都有一部分的zip数据



将zip数据按顺序组合,拼接在一起,保存为zip文件

发现需要密码

暴力破解

密文

提示

#!/usr/bin/env python
import base64
import re
def baseDec(text,type):
if type == 1:
return base64.b16decode(text)
elif type == 2:
return base64.b32decode(text)
elif type == 3:
return base64.b64decode(text)
elif type == 4:
return base64.b85decode(text)
else:
pass
def detect(text):
try:
if re.match("^[0-9A-F=]+$",text.decode()) is not None:
return 1
except:
pass
try:
if re.match("^[A-Z2-7=]+$",text.decode()) is not None:
return 2
except:
pass
try:
if re.match("^[A-Za-z0-9+/=]+$",text.decode()) is not None:
return 3
except:
pass
return 4
def autoDec(text):
while True:
if b"MRCTF{" in text:
print("\n"+text.decode())
break
code = detect(text)
text = baseDec(text,code)
with open("flag.txt",'rb') as f:
flag = f.read()
autoDec(flag)
MRCTF{Y0u_Are_4_p3rFect_dec0der}
[MRCTF2020]Unravel!!

得到3个文件

JM.png
放进010查看,发现有压缩包

分离,解压压缩包,得到图片
图片名称是aes.png,已经提示我们跟AES有关


再看Look_at_the_file_ending.wav,名称提示我们要查看文件结尾
010查看,发现字符串

https://www.wgstart.com/help/docs117d.html
AES在线解密

得到win-win.zip解压密码:CCGandGulu

使用工具SilentEye

MRCTF{Th1s_is_the_3nd1n9}
[MRCTF2020]不眠之夜

下载附件得到一堆碎片

用PS将图片拼接起来

MRCTF{Why_4re_U_5o_ShuL1an??}
[MRCTF2020]你能看懂音符吗

010打开

修改文件头为:52617221

后缀名添加:rar

解压得到


解码

flag{thEse_n0tes_ArE_am@zing~}
[MRCTF2020]千层套路

下载附件发现是一个嵌套加密的压缩包
用ai写一个脚本
import os
import zipfile
import sys
def unzip_recursive(start_zip_path: str):
"""
递归解压嵌套压缩包,密码 = 压缩包文件名(不带后缀)
修复:所有文件解压到同一目录,避免路径过长
"""
current_zip = start_zip_path
# 所有解压都在当前脚本目录,不创建嵌套长路径(核心修复)
base_dir = os.getcwd()
while True:
if not os.path.exists(current_zip):
print(f"✅ 已无更多压缩包,解压完成!")
break
# 获取密码:文件名去掉.zip
zip_filename = os.path.basename(current_zip)
password = os.path.splitext(zip_filename)[0]
print(f"\n📦 正在解压:{current_zip}")
print(f"🔑 使用密码:{password}")
try:
# 解压到根目录,不创建嵌套文件夹(关键修复)
with zipfile.ZipFile(current_zip, 'r') as zf:
zf.setpassword(password.encode('utf-8'))
zf.extractall(base_dir) # 全部解压到当前目录
print(f"✅ 解压成功")
# 删除已经解压过的压缩包,避免干扰
if os.path.exists(current_zip):
os.remove(current_zip)
# 查找目录中下一个.zip文件
next_zip = None
for file in os.listdir(base_dir):
if file.lower().endswith('.zip'):
next_zip = os.path.join(base_dir, file)
break
if not next_zip:
print("\n🎉 所有嵌套压缩包已全部解压完成!")
break
current_zip = next_zip
except zipfile.BadZipFile:
print(f"❌ 错误:不是有效的 ZIP 文件")
break
except RuntimeError as e:
print(f"❌ 解压失败:密码错误或文件损坏 → {e}")
break
except Exception as e:
print(f"❌ 错误:{str(e)}")
break
if __name__ == "__main__":
print("=" * 50)
print(" 无限层级嵌套压缩包自动解压工具(修复路径过长)")
print("=" * 50)
first_zip = "0573.zip" # 这里改成你的第一个压缩包
if len(sys.argv) > 1:
first_zip = sys.argv[1]
unzip_recursive(first_zip)
得到一个qr.txt文件,文件名"qr"提示我们最终会是一个二维码

放到随波逐流,图片--RGB数据串转图片


扫一扫得到flag
