WriteUp:巅峰极客 Misc
前言
巅峰极客的三道 Misc 题。
本体分别如下:
warmup
这道题比较奇怪,我看很多 WP 写的都是用 StegSolve 解决,但是我这里 StegSolve 一模一样的选项却什么都看不到,很蓝瘦。
所以我用的是 zsteg,效果还不错。
这里可以看到出现了 Ook 和 BrainFuck,分别提取出来后到这个网站在线解密可以得到三段 flag 拼接起来就是答案。
loli
打开一看是一张二维码,但是微信扫不出来,然后我就被坑了以为是少了定位标志....
后来经提醒直接用 CQ Research 扫码可以得到
这里有个提示 255,也就是 0xFF。
接着用 010 editor 打开图片发现文件末尾多了一块。
联想之前的提示(开脑洞)应该是异或,于是把最后一块提取出来异或得到新的 png 图片。
这里观察到图片大小为 100x100,并且所有的黑块被横向分为了十一列(全白的一列当做分界线),同时纵向上被分为了 50 行(全黑的一行当做分界线)。
接着注意到每一小段都是 8 个像素并且最左边的像素一定是白色,联想是 ASCII 码,所以写个脚本挨个翻译为 ASCII 码。
1 | import struct |
然后可以得到 flag。
flows
首先这里的解题方法参考了安全客的这篇文章
把 pcap 文件拖进 wireshark 后,按照包大小排序注意到三个比较关键的包。
图中高亮的包是一个 tips,同时最大的两个包分别是两个 pcap 文件。
其中 tips 内容如下
tips:
1、键盘的usb.capdata第一字节为0x02的代表按了shift键 2、鼠标的usb.capdata只用关心第一字节
两个 pcap 文件分别就是键盘和鼠标的流量包,分别用 tshark.exe -r 1.pcap -T fields -e usb.capdata > usbdata.txt
提取出我们需要的流量。
其中对于键盘的流量包根据提示我稍微对脚本进行了一些修改,加入了 shift 的提醒
1 | mappings = { 0x04:"a", 0x05:"b", 0x06:"c", 0x07:"d", |
这样可以得到 flag 的前半段,后半段在鼠标流量里。
根据 tips 只用关心第一字节,所以猜测 0x1 代表 0 并且 0x2 代表 1 然后构成二进制串(反正错了就反过来再猜一次),写脚本得到 flag 后半段。
1 | with open('usbdata.txt') as mouse: |
最后拼接起来就是完整 flag。
后记
做 Misc 题,脑洞很重要。