赛后复现的题目标题前用🔁标注。感谢群内大佬的解惑。
Misc
音频的秘密
Chllenge
音频也会有秘密吗?
Solution
一开始还以为是摩斯电码,在这里耗了很长时间(好气)
用SilentEye提取隐写文件,sound quality 选 low

拿到加密压缩包

爆破得到密码1234

LSB隐写拿到qzvk{Ym_LOVE_MZMP_30vs6@_nanmtc_q0i_J01_1}

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

flag{No_AAAA_BBBB_30ao6@_cccyyy_f0k_Y01_1}Terminal Hacker
Challenge
黑客的世界,从敲下第一个命令开始…… 进入你的终端,尝试找出那串藏在系统深处的字符串。 附件: hacker.exe 找到隐藏的 flag。 flag 格式: flag{…}
Solution
先用pyinstxtractor解包,然后用pycdc反编译

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
先合并文件
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

9h0zQJok.txt

T0BPOXDY.txt

Me4CoMw7.txt

gWa0DiTs.txt

9h0zQJok.txt,FiBRFFnG.txt,gWa0DiTs.txt,Me4CoMw7.txt,T0BPOXDY.txt图片
看了所有图片的属性,甚至怀疑过借着透明图层隐藏信息,都失败了
不过后来转念一想题目提到了恶意代码,于是猜测是文件尾的一句话木马,写个脚本检测一下(一开始是找的php,不过由于出来的结果只有两个符合标准并且都带有cmd,所以把这里的关键词改为了cmd来扩大范围)
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}')输出如下
100uc1uh.png3qc0mmfh.pnga4ijc0fu.pngb7aykkl9.pngblz2lvtj.pngcn9b4gct.pnglhf82t3d.pngsofhifed.pngubh4lmwb.pngwxrozxe3.png逐个检查文件尾即可得到答案
a4ijc0fu.png,b7aykkl9.png,lhf82t3d.png,sofhifed.png,wxrozxe3.png用Adobe Acrobat DC一次性全部打开,发现里面有部分PDF存在JS脚本,弹窗显示了XSS in PDF,于是用脚本检测可疑的PDF文档
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}")得到输出
bVKINl.pdfDzVuCy.pdfhnPRx1.pdfmIR13t.pdfOGoyOG.pdfrSG2pW.pdf逐个打开发现DzVuCy.pdf不存在脚本,因此这部分的答案就是剩下的5个
bVKINl.pdf,hnPRx1.pdf,mIR13t.pdf,OGoyOG.pdf,rSG2pW.pdfWAV

用AU打开,按采样率排序就会发现这几个音频的采样率不一样
Bd2IYe3.wav,bjVwvcC.wav,H0KDChj.wav,ou9E9Mh.wav,UEbzH4X.wav拼接
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.wavflag{234ed8ef5421c5e559420dbf841db68f}🔁一大碗冰粉
Challenge
你是大黑客,这次你入侵了icej3lly的个人电脑,准备跟踪他的行踪,但是icej3lly好像并不害怕⌓‿⌓,还跟你玩起了加密游戏,甚至把提示都给你了ƪ(˘⌣˘)ʃ。但当你正在查看桌面上的秘密文件和提示时突然断电了,只留下了这个内存镜像,多疑的你一定会有所发现吧˃ʍ˂
Solution
在桌面发现压缩包secret.zip然后发现它是完全损坏的
在桌面ctf文件夹中发现hint.txt,得到提示doyouknowplaintextattack
vol3把这个压缩包导出

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

明文攻击得到三个密钥75a1a160 d4d2cd93 ebdc5c33,然后从解压得到的mimi.zip解压得到疑惑吗?疑惑就对了.search
疑惑谐音异或,解密密钥是search
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)从文件头判断解密得到的二进制文件时压缩包

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

解压得到图片flag.jpg

LSB发现flag

接下来是OSINT

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

flag{江苏省连云港市海州区陇海步行街}🔁哇哇哇瓦
Challenge
有款游戏越打越饥饿就是电脑瓦罗兰特,这里没有人给你压力,全是妹妹加油打气,我很清楚你没什么实力但是瓦妹不离不弃,大妹子声甜技术又好,少萝御姐概率不小…
Solution

发现flag的前半部分flag{Val0rant_1s_th3_,还发现一藏了一个zip压缩包
binwalk把压缩包提出来,解压拿到提示密码是场上存活的两位英雄的英文名字连起来(区分大小写) 什么?你不知道密码在哪用?!那我问你,隐写都知道,明写看不见?拿你瞄准时的眼力仔细观察观察图片中的角落吧
右下角发现明显LSB隐写痕迹

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

发现压缩包的文件头PK,导出来用脚本反转
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)
发现解压要密码,根据前面的提示搜索发现两位英雄的名字分别是Gekko和Yoru,经尝试得到解压密码为GekkoYoru

得到flag的后半段best_FPS_g@me!!}
flag{Val0rant_1s_th3_best_FPS_g@me!!}🔁隐藏的邀请
Challenge
格式: flag{}
Solution
.docx后缀改为,zip后解压,在Cyyyy.xml中发现隐藏的内容

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

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

flag{yeah_Y0u_are_R1ght_Say_G0}