# Xcode v5.8
文本中得到
1 | hAXBCEaBZMLZNJbRAQnNlOZdARqFAB1QpKa7IF4F5R1ElBKErIKpFQZNcNEc+ |
看编码的构造结构和题目提示 xcode,猜测为 xxencode 编码,随波逐流解码得
1 | 23NBceayYVwLs6qjZLwdL475ZbTDdGt415d7QmQrVhe |
v5.8 提示为 base58,解码得到 flag
DASCTF{The_new_encode_master!!}
# Ez_Signin
解压附件得到加密压缩包
ARCHPR 爆破
得到密码:11452
将文本中的内容进行 base32 解码得到按键精灵的脚本
将脚本复制到按键精灵的源文件界面
F10 运行发现鼠标画出了 flag 字样,于是打开画板运行得到 flag
如果将脚本运行到最后能发现 flag 是被删除了一部分的,在这个花括号 F12 停止即可
flag{8f16a9717824aa456eb9a98653eb3993}
# NewGrating
这题在比赛中并没出,有点小遗憾,赛后把最后的光栅图了解了一下,记录一下
解压得到流量包,总共七个流,不算多,一个个翻翻看
在 0 流得到了冰蝎的马,同样得到了冰蝎的 key,e46023a69f8db309,并且流量是冰蝎 3 的 CBC 模式的 AES 加密。默认 iv 为 0123456789abcdef
随便拿流 2 的请求包试试,成功解密
接下来解密发现流 2、3 都没有什么作用,看到关键的流 4,流量比较大,追踪 tcp 会有点卡,并且返回包会被自动解码,这里建议追踪 http 并且放入 vscode 进行复制解码
比赛的时候发现自己写的 gui 跑不了这么大的数据,就只能手搓脚本了
1 | import base64 |
为了复制大数据方便就给他输出到文本当中了
在第二个请求包的
将 content 字段解码得到了 password.png
同样在第 5 个请求包解码得到了 7z 压缩包
分别导出,发现压缩包需要密码,需要解密图片拿到密码
该图片是五帧的光栅图,也就是五个图层通过位移、消除操作合并成的一张图片
关于这个 5 层是怎么来的现在所知道的只有试,本质上就是隔 n 个像素提取 1 列进行组合看看能不能拼成可识别的图形
# 方法一:
知道了原理之后利用脚本进行提取(均为赛后别的师傅的脚本,来利用学习):
一:
1 | from PIL import Image |
二:
1 | from PIL import Image |
以上两个脚本都能正确分离出五帧光栅图,使用的均是相隔 5 个像素进行提取的方法
# 方法二:
去了解一下光栅图的制作方法可以知道,光栅图其实就是利用了人的肉眼补全原理,加上多张文字的消除、偏移、重叠而成。重叠之后人的肉眼无法辨别而达到一个隐藏的作用,因此可以根据光栅与帧数的公式去制作光栅,使人的肉眼能够辨别每一帧的字符,达到一个 "分离" 的效果
1 | (黑色像素宽度+白色像素宽度)/ 白色像素宽度 = 帧数 |
因此这里使用 PS 制作黑色为 4 像素,白色为 1 像素的光栅
移动光栅能得到全部的 5 帧文字
得到 password:PPeRLR6SEmHGC
解开压缩包得到 flag
DASCTF{d68b6013-d70a-4ada-926d-68fe3265360a}
总结:这次比赛的 misc 题有点少,前面两题一般,最后的光栅图挺有意思的