CTF_复现(部分) | DASCTF X HDCTF 2024
CHECKIN 了一下,排名 128/425(泪。
官方 WP:https://www.yuque.com/yuqueyonghu30d1fk/gd2y5h/ksfsfw8yf1u2xhhq
以下为赛后复现。
MISC
Ez_mc
简介
Ling特别喜欢玩游戏,但他玩得比较菜,你能帮帮他吗?(mc版本为1.20.4)
附件
一个压缩包:
打开内容:
分析
MC 门外汉跟着 WP 找第一个 PASS。
参考HMCL启动器怎么导入存档 这个操作教给你-工具软件-教程之家打开存档:
在 /saves/THE SECOND PART/level.dat/Data
中找到 allowCommands 并修改为 1 后保存:
重启 MC,输入命令 /give @p netherite_ingot 64
,得到下界合金锭(一个就够其实……):
把下界合金锭放进漏斗,获得假 flag 和一个 PASS:
回到存档文件,THE SECOND PART 文件夹内有个加密压缩包,用之前拿到的 PASS:HDCTFWIN!
解压得到 svp 文件,文件名为 flag 前半部分:
下载 Synthesizer V,打开该 svp 文件,在 146 往后的音轨呈现两种高度分布:
尝试转换为摩斯编码,得到 .--. ..- --.. --.. .-.. . ..--.- --. .- -- ...-- ..--.. -----.-
和 -..- --. ..-- ..-- -.-- - --..-. ..- -. .. ---.. --..-- .....-.
。
分别解码,得到 PUZZLE_GAM3?%u7d
和 XG%u3%u3YT%u32UNI8,%u2
。
显然前半段更像是 flag,尝试将其拼接前半段 flag 后得到 flag DASCTF{1s_MC_the_best_PUZZLE_GAM3?}
。
知识点及参考
HMCL启动器怎么导入存档 这个操作教给你-工具软件-教程之家
Cheat Command-MC百科_最大的Minecraft中文MOD百科
我的世界下界合金锭指令是什么_MC下界合金锭指令介绍_3DM网游
Synthesizer V | Dreamtonics株式会社
Solver的开拓之路
简介
D0_Y0u_L1ke_Van_Puzzle?
附件
解压打开是一个 apk 文件:
分析
在 累了就玩玩游戏吧\你能发现其中的秘密吗_StarRail_2.2.0\assets\MiHoYoSDKRes\HttpServerResources\audio
路径中找到两个文件:
其中名为 s3cret.zip 的加密压缩包猜测为 flag 相关文件,内含一个 mp3 文件和一个 txt 文件:
通过比对压缩包内外的 mp3 文件,发现文件大小相同(8892字节),猜测二者为同一音频,可使用明文攻击$^{知识点及参考2}\ $爆破。通过尝试,使用 2345 好压对 dlc_common_reward.mp3 压缩生成的压缩包可作为明文文件用于 Advanced Archive Password Recovery 工具进行明文攻击。攻击几分钟后停止攻击,得到文件加密密钥:
点击确定后保存的压缩包文件可直接打开,得到原先的 mp3 和 一个 txt:
mp3 比赛的时候就翻遍了啥也没有,Zoo.txt 打开是宠物店的声音:
查了下属于兽语编码$^{知识点及参考3}\ $的范围,在线解码得到 flag:
知识点及参考
- 官方 WP 中在搜索目录文件时使用到的
content:cret - Everything
为 Everything 工具命令,命令意为搜索“文档内容中含有cret
字符串”的文件。详见Everything使用详解-sy670733-CSDN。 - 明文攻击:通过压缩包内已知的文件来恢复密钥。爆破流程参考使用ARCHPR明文攻击爆破压缩包-xnightmare-CSDN,具体细节问题参考Zip明文攻击细节问题及解决方案-Lu1u~-CSDN。
- 兽语编码及相关编码参考CTF中那些有趣的编码与解码方式-十二惊惶,在线工具用的兽音译者在线编码解码-兽音翻译咆哮体加密解密。
套娃是你的谎言?
简介
套一套啊,套一套啊~~
附件
解压打开:
分析
Wireshark 打开 pcapng 文件,大概浏览了一下发现 UDP 包大多消息长度都是1024 的,剩下的消息长度为 24 的包数据 444155514678494f507755564451306242526748447a6b3d
转 ASCII 码为 DAUQFxIOPwUVDQ0bBRgHDzk=
,消息长度为 15 的包数据 4539455a51455358374653384a5441
转 ASCII 码为 E9EZQESX7FS8JTA
:
丢到 cyberchef 里通过 Base45 解码 E9EZQESX7FS8JTA
得到 pass=HDCTF
:
剩下的这串看着像 Base64 的数据解码得到一串怪登西:
将刚刚得到的 PASS 以 UTF8 格式异或 Base64 结果,得到一个假 flag:
行吧咱继续找,将所有包按长度排序,发现一个唯一长 496 的 UDP 包,查看数据发现一个压缩包:
把压缩包保存下来,打开后出现报错:
用 010 Editor 打开,提示遇到未知的 ZIP 标签导致模板停止:
看了下结构发现压缩源文件数据区少了 11 字节:
经过各种修改后得到的压缩包打不开。看官方 WP,这种情况应该是修改了 zip 的加密方式,更改为 AES 加密的文件头尾可得到压缩包:
打开压缩包需要密码,根据 pcapng 文件的提示,猜测和时间有关,bing 查找和时间相关的网络协议,找到 NTP 协议,在文件中也找到了 NTP 包:
然后咱又卡住了。官方 WP 给出的思路是对除第一个以外的 NTP 包两两一组计算出时间差乘 10 后转为字符串,咱先将文件里的 NTP 包导出为 time.pcapng,放到 Wireshark 目录下,创建 time.py 放在同目录下:
import subprocess
# 获得时间值 #
try:
result = subprocess.run('tshark -r time.pcapng -T fields -e frame.time_relative', shell=True, capture_output=True, text=True)
if result.returncode == 0:
output = result.stdout.strip()
else:
output = result.stderr.strip()
except Exception as e:
output = str(e)
timelist = output.split("\n") # 分隔时间
# print(timelist)
# 两两计算时间差-代码在官方WP基础上微调 #
c = []
for i in range(1, len(timelist) - 2, 2):
c.append(float(timelist[i+1]) - float(timelist[i]))
# print(c)
# 乘10取整作为ascii转文字-代码在官方WP基础上微调 #
ret = ''
for i in range(0, len(c)):
c[i] = int(c[i] * 10)
# print(chr(c[i]), c[i])
ret += chr(c[i])
print(ret)
拿到 pass:
用这个 pass (包含 pass=
)打开压缩包,拿到在线文档链接打开:
CTRL+H 随便查找一个字母。这里以 f 为例,通常回显为 “已在值为“CAN YOU FIND THE HIDING FLAG?”的隐藏单元格“'工作表X'!A1”中找到匹配项。”,但在工作表 18 的 L44、工作表 36 的 G92 和工作表 47 的 A70 匹配到了其他结果,分别为 REFTQ1RGe1RoM19OM
3N0aW5nX2RvSUlfaXN
feW91cl8xaWUhISEhfQ==
将三条字符串前后拼接进行 Base64 解码,得到 flag:
知识点及参考
- 遇到 zip 压缩源文件数据区字节数量不对,可以考虑是压缩包加密方式被更改了,具体加密方式可参考官方文档 ZIP File Format Specification,其中,AES 加密压缩包的压缩源文件数据区及中央目录记录尾部区可参考
where to store AES information in ZIP-Stack Overflow - NTP 协议确保了时间在网络中的一致性,具体介绍参考六千字详细图解网络时间协议(NTP),带你领略NTP的魅力!-wljslmz-云社区-华为云
- tshark 工具导出包的列信息命令参考 Wireshark如何单独导出包的列信息-大学霸-博客园,其他 tshark 的相关用法参考 一文读懂网络报文分析神器Tshark: 100+张图、100+个示例轻松掌握-RokasYang-腾讯云开发者社区
- Wireshark 对包的 Time 列筛选的方法参考 Wireshark 提示和技巧 | Time 时间分析那些事-7ACE-CSDN
- Python 运行 cmd 命令得到能再利用的返回值参考 python10种方式运行cmd命令并获得返回值的高级技巧-《代码爱好者》-CSDN
- IMPORTRANGE 函数我似乎用不了,但具体使用方法可参考 Google Sheets:将 IMPORTRANGE 与多个工作表一起使用 – Statorials
【未完成】谐乐大典
简介
一个压缩包:
打开是知更鸟新歌:
但播不了。
分析
先尝试将它放到 binwalk 里找找隐藏文件,在 linux 里粘贴文件名时发现文件名中存在零宽字符隐写:
根据零宽字符进行在线解码,得到 PASS:
比赛那会儿就卡这了(逃。
WP 提到音乐封面图片存在 oursecret 加密特征,我没找到特征的具体内容,这里先存个档。
知识点及参考
【0.0】 oursecret 加密特征