0x00 题目地址
https://milkice.me/2019/12/31/2019-summary/
0x01 第一关 – DNS Record
先吐槽一下题目的设计, 我第一反应还以为这个域名是题目的入口网站,没想到这个域名就是题目…
使用 dig 直接挖DNS dig @8.8.8.8 +nocmd happy.2020.milkice.me any +multiline +noall +answer
, 发现有一条TXT记录
一开始头疼了很久,试过 Base64, Base32 和各个 Rot 变种都没解开(某些 Base32 工具的实现实在是迷惑). 然后频道里更新了一条提示
于是转成全大写, 结合给出的第一条提示可知是 RFC4648 中除去 Base64 以外的算法. 由于 Base16 编码结果是纯数字排除,用 Base32 解之, 得到 https://milkice.me/sEcRets/stream.pcapng, 完成
0x02 第二关 – USB PCAP Replay
下载第一题得到的 PCAP , 用 Wireshark 打开发现是 USB 抓包数据. 里面有不少设备, 但大致扫一眼发现下面几乎全是与 1.2.1 这个设备通信的, 结合第二条提示可以猜测是重放数位板轨迹
要对这个轨迹进行重放比较复杂, 因此这里先考虑直接解码数据的方案. 由于我们只需要 数位板->主机 的数据, 使用 usb.src == "1.2.1"
过滤并导出一个新的 PCAP 文件
由于我们只需要 Leftover Capture Data 这个字段, 并且想得到便于处理的格式, 再用 tshark -r temp.pcapng -T fields -e usb.capdata > temp.txt
进行一次导出. 我们在用 Windows, 所以别忘了将导出后的 \r 删掉. 当然你也可以直接用 tshark 完成过滤和导出, 但因为我一开始直接用 Wireshark 打开了这个文件, 稍微绕了一点弯.
接下来就是如何处理这一堆 HEX 的问题了. 一顿搜索后发现 Wacom 的 Linux 驱动 是开源的. 大致浏览源码后在 这里 找到数据包的格式, 发现 X 和 Y 都是简单的 Short. 另外直接观察 Hex 发现坐标回报应该都是 02 开头的数据包, 其他后面都是0应该不是我们要找的功能.
于是写一个简单的 PHP 脚本来解析数据包, 生成一系列 Matlab 可以解析的坐标写进 txt 文件, 导入 Matlab 进行绘制. 这里还在第11行判断了笔压, 因为笔压为0的时候应该只是笔在移动而并没有书写.
用 Matlab 的 scatter(x,y)
函数进行绘图, 如果直接用不带额外参数的 plot()
绘图会导致轨迹比较难看, 当然你也可以用 plot(x,y,'*')
就是了…
然后把图片丢进PS反转一下, 得到 https://milkice.me/2020/uso.zip, 完成.
0x03 第三关 – Plain Text Attack
这关设计上的问题就比较多了, 先吐槽一下坑的点:
- 没提示压缩软件, 不同压缩软件可能对注释的解析方式不同, 比如我用好压打开看到的注释是乱码
- 还是没提示压缩软件, 不同压缩软件可能默认参数不一样导致 Plain Text Attack 失败
- 由于采用了 Zip64 格式, 导致一般能找到的 Attack 工具无法正常解密, 需要使用 p7zip 进行解密(一个后期给的提示). 但如果我们直接 Google p7zip 会搜到一堆 7-Zip 的 Linux 移植版…
将第三关的压缩包下载下来, 首先看一眼注释发现一个送分题答案, 第一个红包就到手了.
然后发现压缩包有密码, 试了一些常见密码都无果. 根据提示 3 以及压缩包内容猜测需要使用 Plain Text Attack, 于是找了一系列工具
- 经典的 PkCrack https://github.com/keyunluo/pkcrack
- 另一个实现, BkCrack https://github.com/kimci86/bkcrack
- 上面的优化版本, RBkCrack https://github.com/Aloxaf/rbkcrack
它们的使用方法基本都一样, 我们先用 BandiZip 将已知的明文打一个压缩包
随后使用 tool -C uso.zip -c "432314 Mike Greene - Bill Nye the Science Guy Theme Song (Chinese Intro).osz" -P fml.zip -p "432314 Mike Greene - Bill Nye the Science Guy Theme Song (Chinese Intro).osz"
进行攻击. 这里还是稍微解释一下参数吧, 网上找到的好多文档写的都很模糊, 希望我有解释清楚.
- 首先, 我们有一个压缩包 uso.zip 和里面一个名字叫 432314 Mike Greene – Bill Nye the Science Guy Theme Song (Chinese Intro).osz 的 加密 文件对应的 明文
- 我们知道 uso.zip 是使用 BandiZip 创建的, 因此我们用已知明文和已知软件创建一个 未加密 的压缩包
- -C 即为要攻击的压缩包 uso.zip
- -c 为要攻击的 压缩包里面 的 有已知明文的 文件名, 这里就是我们能下载到的 432314 Mike Greene – Bill Nye the Science Guy Theme Song (Chinese Intro).osz, 该文件在压缩包内的名称没有变动过
- -P 为刚才创建的 未加密压缩包
- -p 为 未加密压缩包 内的 明文文件名
通过上面的指令破解后我们可以得到三个Key: 3e095466 a08d9ca4 c752123f
那么问题就来了, 这三个 Key 均不能被拿来解密我们的 uso.zip, 我找到的三个工具都会提示数据损坏.
后面奶冰又提示我用 p7zip, 经过漫长的搜索后才发现他指的是 这个项目 而不是 7-Zip 的 Linux 版本…用这个魔改版的 p7zip 解压之, 终于得到了两个osz文件, 完成
0x04 第四关 – OSZ文件解析
这关就很简单了. 直接将 milkice.osz 解压, 使用 Notepad++ 搜索 Alipay, 完成