赛后复现的题目标题前用🔁标注。感谢群内大佬的解惑。

Misc

音频的秘密

Chllenge

音频也会有秘密吗?

Solution

一开始还以为是摩斯电码,在这里耗了很长时间(好气)

SilentEye提取隐写文件,sound quality 选 low

xuanyuanbei2025-1

拿到加密压缩包

xuanyuanbei2025-2

爆破得到密码1234

xuanyuanbei2025-3

LSB隐写拿到qzvk{Ym_LOVE_MZMP_30vs6@_nanmtc_q0i_J01_1}

xuanyuanbei2025-4

结合这个不难猜到是维吉尼亚加密,密码就是lovely

xuanyuanbei2025-5

flag
flag{No_AAAA_BBBB_30ao6@_cccyyy_f0k_Y01_1}

Terminal Hacker

Challenge

黑客的世界,从敲下第一个命令开始…… 进入你的终端,尝试找出那串藏在系统深处的字符串。 附件: hacker.exe 找到隐藏的 flag。 flag 格式: flag{…}

Solution

先用pyinstxtractor解包,然后用pycdc反编译

xuanyuanbei2025-6

flag
flag{Cysay_terminal_game_hacked_successfully}

数据识别与审计

Challenge

公司管理员在商品测评汇总平台中的文件服务器,存放了一些商品相关或者用户上传的文件数据,包括 TXT,图片,PDF,音频数据。在各种数据中,可能泄露了一些敏感信息或者某些用户插入了恶意代码到 各种类型数据中,每个类型有5个。请选手对于各种数据类型的文件进行审计,找到带有敏感信息或者恶意代码的数据文 件,并将文件名列出来。flag为md5(文件名排序)

排序规则:TXT>图片>PDF>音频数据,且数字>大小写字母 例如:提取的答案是1a.txt,q5.txt,Qa.txt,aa.pdf,b.png, 则flag为flag{md5(1a.txt,q5.txt,Qa.txt,b.png,aa.pdf)}=flag{4b24307829e14b4acdfdc5b43d87554f}

Solution

TXT

先合并文件

python
import os # 定义路径txt_folder = r"E:\杂\数据审计\txt"output_file = r"杂项\数据审计\output.txt" # 获取所有 .txt 文件(按修改时间排序)txt_files = sorted(    [f for f in os.listdir(txt_folder) if f.endswith('.txt')],    key=lambda x: os.path.getmtime(os.path.join(txt_folder, x))) # 用于记录已出现的内容和对应的文件名列表content_map = {} # 遍历所有文件,读取内容并归类for filename in txt_files:    file_path = os.path.join(txt_folder, filename)        try:        with open(file_path, 'r', encoding='utf-8') as f:            content = f.read()                # 如果内容已经在字典中,添加文件名到该内容对应的列表中        if content in content_map:            content_map[content].append(filename)        else:            content_map[content] = [filename]        except Exception as e:        print(f"读取文件 {filename} 出错:{e}") # 写入结果到输出文件with open(output_file, 'w', encoding='utf-8') as out_f:    # 按照原始顺序处理每个唯一内容块(如果需要保持首次出现顺序)    seen_contents = set()     for filename in txt_files:        file_path = os.path.join(txt_folder, filename)                if filename not in seen_contents:            try:                with open(file_path, 'r', encoding='utf-8') as f:                    content = f.read()                                # 如果这个内容还没写过                if content not in seen_contents:                    # 找出所有同内容的文件名                    same_content_files = content_map[content]                    # 合并文件名                    combined_names = ', '.join(same_content_files)                                        # 写入合并的文件名行                    out_f.write(combined_names + '\n')                    # 写入内容                    out_f.write(content + '\n\n')  # 每个内容之间空两行                                        # 标记为已写入                    seen_contents.update(same_content_files)                        except Exception as e:                out_f.write(f"[读取错误:{filename}] {e}\n")

FiBRFFnG.txt

xuanyuanbei2025-7

9h0zQJok.txt

xuanyuanbei2025-8

T0BPOXDY.txt

xuanyuanbei2025-9

Me4CoMw7.txt

xuanyuanbei2025-10

gWa0DiTs.txt

xuanyuanbei2025-11

text
9h0zQJok.txt,FiBRFFnG.txt,gWa0DiTs.txt,Me4CoMw7.txt,T0BPOXDY.txt
图片

看了所有图片的属性,甚至怀疑过借着透明图层隐藏信息,都失败了

不过后来转念一想题目提到了恶意代码,于是猜测是文件尾的一句话木马,写个脚本检测一下(一开始是找的php,不过由于出来的结果只有两个符合标准并且都带有cmd,所以把这里的关键词改为了cmd来扩大范围)

python
import os # 设置目标目录target_dir = r'杂项\数据审计\png' # 遍历目录及子目录中的所有文件for root, dirs, files in os.walk(target_dir):    for file in files:        file_path = os.path.join(root, file)         try:            with open(file_path, 'rb') as f:  # 以二进制模式打开文件                content = f.read()                 if b'cmd' in content:                    print(file)                    continue        except Exception as e:            print(f'[!] 读取文件出错: {file_path},错误: {e}')

输出如下

text
100uc1uh.png3qc0mmfh.pnga4ijc0fu.pngb7aykkl9.pngblz2lvtj.pngcn9b4gct.pnglhf82t3d.pngsofhifed.pngubh4lmwb.pngwxrozxe3.png

逐个检查文件尾即可得到答案

text
a4ijc0fu.png,b7aykkl9.png,lhf82t3d.png,sofhifed.png,wxrozxe3.png
PDF

用Adobe Acrobat DC一次性全部打开,发现里面有部分PDF存在JS脚本,弹窗显示了XSS in PDF,于是用脚本检测可疑的PDF文档

python
import os folder_path = r'杂项\数据审计\pdf' # 遍历 pdf 文件for root, dirs, files in os.walk(folder_path):    for file in files:        if file.lower().endswith('.pdf'):            file_path = os.path.join(root, file)            try:                with open(file_path, 'rb') as f:                    content = f.read()                    if b"/JS" in content:                        print(file)                        continue            except Exception as e:                print(f"无法读取文件 {file_path}: {e}")

得到输出

text
bVKINl.pdfDzVuCy.pdfhnPRx1.pdfmIR13t.pdfOGoyOG.pdfrSG2pW.pdf

逐个打开发现DzVuCy.pdf不存在脚本,因此这部分的答案就是剩下的5个

text
bVKINl.pdf,hnPRx1.pdf,mIR13t.pdf,OGoyOG.pdf,rSG2pW.pdf
WAV

xuanyuanbei2025-12

用AU打开,按采样率排序就会发现这几个音频的采样率不一样

text
Bd2IYe3.wav,bjVwvcC.wav,H0KDChj.wav,ou9E9Mh.wav,UEbzH4X.wav
拼接
text
9h0zQJok.txt,FiBRFFnG.txt,gWa0DiTs.txt,Me4CoMw7.txt,T0BPOXDY.txt,a4ijc0fu.png,b7aykkl9.png,lhf82t3d.png,sofhifed.png,wxrozxe3.png,bVKINl.pdf,hnPRx1.pdf,mIR13t.pdf,OGoyOG.pdf,rSG2pW.pdf,Bd2IYe3.wav,bjVwvcC.wav,H0KDChj.wav,ou9E9Mh.wav,UEbzH4X.wav
flag
flag{234ed8ef5421c5e559420dbf841db68f}

🔁一大碗冰粉

Challenge

你是大黑客,这次你入侵了icej3lly的个人电脑,准备跟踪他的行踪,但是icej3lly好像并不害怕⌓‿⌓,还跟你玩起了加密游戏,甚至把提示都给你了ƪ(˘⌣˘)ʃ。但当你正在查看桌面上的秘密文件和提示时突然断电了,只留下了这个内存镜像,多疑的你一定会有所发现吧˃ʍ˂

Solution

在桌面发现压缩包secret.zip然后发现它是完全损坏的

在桌面ctf文件夹中发现hint.txt,得到提示doyouknowplaintextattack

vol3把这个压缩包导出

xuanyuanbei2025-13

打开发现要密码,结合前面的提示使用明文攻击,很显然这里用正是前面得到的hint.txt,经过比较CRC值证实了这一猜想

xuanyuanbei2025-14

明文攻击得到三个密钥75a1a160 d4d2cd93 ebdc5c33,然后从解压得到的mimi.zip解压得到疑惑吗?疑惑就对了.search

疑惑谐音异或,解密密钥是search

python
def xor_decrypt(data: bytes, key: str) -> bytes:    key_bytes = key.encode('utf-8')    result = bytearray(len(data))    for i in range(len(data)):        result[i] = data[i] ^ key_bytes[i % len(key_bytes)]    return result def decrypt_file(input_path: str, output_path: str, key: str):    try:        with open(input_path, 'rb') as f:            encrypted_data = f.read()                decrypted_data = xor_decrypt(encrypted_data, key)         with open(output_path, 'wb') as f:            f.write(decrypted_data)                print(f"解密完成,文件已保存到:{output_path}")        except Exception as e:        print(f"发生错误:{e}") if __name__ == "__main__":    input_file = "疑惑吗?疑惑就对了.search"    output_file = "解密后的文件.bin"    key = "search"     decrypt_file(input_file, output_file, key)

从文件头判断解密得到的二进制文件时压缩包

xuanyuanbei2025-15

修改后缀为.zip后尝试解压发现要密码,扔随波逐流发现是伪加密并修复了

xuanyuanbei2025-16

解压得到图片flag.jpg

xuanyuanbei2025-17

LSB发现flag

xuanyuanbei2025-18

接下来是OSINT

xuanyuanbei2025-19

抖音搜索找到这家店在连云港市海州区路南街道陇海中路盐河巷

xuanyuanbei2025-20

flag
flag{江苏省连云港市海州区陇海步行街}

🔁哇哇哇瓦

Challenge

有款游戏越打越饥饿就是电脑瓦罗兰特,这里没有人给你压力,全是妹妹加油打气,我很清楚你没什么实力但是瓦妹不离不弃,大妹子声甜技术又好,少萝御姐概率不小…

Solution

xuanyuanbei2025-21

发现flag的前半部分flag{Val0rant_1s_th3_,还发现一藏了一个zip压缩包

binwalk把压缩包提出来,解压拿到提示密码是场上存活的两位英雄的英文名字连起来(区分大小写) 什么?你不知道密码在哪用?!那我问你,隐写都知道,明写看不见?拿你瞄准时的眼力仔细观察观察图片中的角落吧

右下角发现明显LSB隐写痕迹

xuanyuanbei2025-22

顺序改为BGR,除了透明图层以外的全选,MSB优先

xuanyuanbei2025-23

发现压缩包的文件头PK,导出来用脚本反转

python
input_file = "瓦学弟天天开心.bin"output_file = "瓦学弟天天开心.zip" with open(input_file, 'rb') as f:    data = f.read() reversed_data = data[::-1] with open(output_file, 'wb') as f:    f.write(reversed_data)

xuanyuanbei2025-24

发现解压要密码,根据前面的提示搜索发现两位英雄的名字分别是Gekko和Yoru,经尝试得到解压密码为GekkoYoru

xuanyuanbei2025-25

得到flag的后半段best_FPS_g@me!!}

flag
flag{Val0rant_1s_th3_best_FPS_g@me!!}

🔁隐藏的邀请

Challenge

格式: flag{}

Solution

.docx后缀改为,zip后解压,在Cyyyy.xml中发现隐藏的内容

xuanyuanbei2025-26

十六进制转字符->和CyyyyXOR->转GIF图像

xuanyuanbei2025-27

得到一个DataMatrix码,在线阅读Data Matrix条码

xuanyuanbei2025-28

flag
flag{yeah_Y0u_are_R1ght_Say_G0}