Berd's Playground

_(:з」∠)_

01/1
08:10
CTF

奶冰的 2020 新年红包 Writeup

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

这关设计上的问题就比较多了, 先吐槽一下坑的点:

  1. 没提示压缩软件, 不同压缩软件可能对注释的解析方式不同, 比如我用好压打开看到的注释是乱码
  2. 还是没提示压缩软件, 不同压缩软件可能默认参数不一样导致 Plain Text Attack 失败
  3. 由于采用了 Zip64 格式, 导致一般能找到的 Attack 工具无法正常解密, 需要使用 p7zip 进行解密(一个后期给的提示). 但如果我们直接 Google p7zip 会搜到一堆 7-Zip 的 Linux 移植版…

将第三关的压缩包下载下来, 首先看一眼注释发现一个送分题答案, 第一个红包就到手了.

然后发现压缩包有密码, 试了一些常见密码都无果. 根据提示 3 以及压缩包内容猜测需要使用 Plain Text Attack, 于是找了一系列工具

  1. 经典的 PkCrack https://github.com/keyunluo/pkcrack
  2. 另一个实现, BkCrack https://github.com/kimci86/bkcrack
  3. 上面的优化版本, 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, 完成

奶冰的 2020 新年红包 Writeup