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?%u7dXG%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:

知识点及参考

  1. 官方 WP 中在搜索目录文件时使用到的 content:cret - Everything 为 Everything 工具命令,命令意为搜索“文档内容中含有 cret 字符串”的文件。详见Everything使用详解-sy670733-CSDN
  2. 明文攻击:通过压缩包内已知的文件来恢复密钥。爆破流程参考使用ARCHPR明文攻击爆破压缩包-xnightmare-CSDN,具体细节问题参考Zip明文攻击细节问题及解决方案-Lu1u~-CSDN
  3. 兽语编码及相关编码参考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:

知识点及参考

  1. 遇到 zip 压缩源文件数据区字节数量不对,可以考虑是压缩包加密方式被更改了,具体加密方式可参考官方文档 ZIP File Format Specification,其中,AES 加密压缩包的压缩源文件数据区及中央目录记录尾部区可参考
    where to store AES information in ZIP-Stack Overflow
  2. NTP 协议确保了时间在网络中的一致性,具体介绍参考六千字详细图解网络时间协议(NTP),带你领略NTP的魅力!-wljslmz-云社区-华为云
  3. tshark 工具导出包的列信息命令参考 Wireshark如何单独导出包的列信息-大学霸-博客园,其他 tshark 的相关用法参考 一文读懂网络报文分析神器Tshark: 100+张图、100+个示例轻松掌握-RokasYang-腾讯云开发者社区
  4. Wireshark 对包的 Time 列筛选的方法参考 Wireshark 提示和技巧 | Time 时间分析那些事-7ACE-CSDN
  5. Python 运行 cmd 命令得到能再利用的返回值参考 python10种方式运行cmd命令并获得返回值的高级技巧-《代码爱好者》-CSDN
  6. IMPORTRANGE 函数我似乎用不了,但具体使用方法可参考 Google Sheets:将 IMPORTRANGE 与多个工作表一起使用 – Statorials

【未完成】谐乐大典

简介

一个压缩包:

打开是知更鸟新歌:

但播不了。

分析

先尝试将它放到 binwalk 里找找隐藏文件,在 linux 里粘贴文件名时发现文件名中存在零宽字符隐写:

根据零宽字符进行在线解码,得到 PASS:

比赛那会儿就卡这了(逃。

WP 提到音乐封面图片存在 oursecret 加密特征,我没找到特征的具体内容,这里先存个档。

知识点及参考

【0.0】 oursecret 加密特征

posted @ 2024-06-03 21:25  Guanz  阅读(369)  评论(0编辑  收藏  举报