本次月赛是和校队的师傅一起参加的,学到不少东西。进行记录和复现。
MISC
SimpleFlow
分离zip文件,将第50组左右的tcp流里的base进行解密找到压缩命令(-p后边就是压缩包密码),打开压缩包得到flag。
熟悉的猫
关于kdbx文件,先了解一下参考资料。其为KeepPass的密码数据文件,所以用KeepPass来打开。但没有告诉密码,可以使用passware(windows密码恢复工具)恢复:
用KeepPass打开查看密码为 jbRw5PB2kFmor6IeYYil ,用这个解压压缩包得到png和txt。题目为”熟悉的猫”,加上图片特征,显然是猫脸变换,简单学习了下,有几个关键点:
1.通过对像素坐标多次乘上变换矩阵(乘一次就进行一次变换)得到变换以后的图像,即像素值不变,位置改变。
2.猫脸变换具有周期性,对变换k次的图像再进行周期T-k次变换后可恢复原图。更好的做法是对变换矩阵求逆矩阵,左乘k次逆即可恢复。
3.这样的变换类似于图像加密,变换次数为密钥key。
txt中有一串很长的k值,这里有两部分利用:
1.零宽解出字符 22*160。
2.k值很长,猜测是塔珀自指公式 。
脚本改改参数即可:
1 | import numpy as np |
得到的图片中可见参数33,121,144,做一个arnold置乱(a=121,b=144),但33貌似没有用,因为第一轮就可以得到flag了:
脚本:Arnold-Python
1 | import numpy as np |
冰墩墩
脚本解压:
1 | import zipfile |
有超级多个txt文件,每个txt中含有01序列和下一个txt文件名:
1 | 101000001001011 =>The txt you should view is m9312r95cr.txt # 01序列补成16位刚好是504b |
经过观察发现需要把每个txt中的01序列补成16位。用脚本批量处理(套宝的):
1 | import re |
二进制序列转hex,发现是zip文件:
存一下,解压得到pyc和jpg,pyc隐写得到payload:$BingD@nD@n_in_BeiJing_Winter_Olympics$
最后利用这个作为密码进行jphs05隐写seek得到base64:$REFTQ1RGe0dvb2RfSm9kX0dpdmVfVGhlX0ZGRkZMQGdfVG9fWW91IX0=$
解码得:$DASCTF{Good_Jod_Give_The_FFFFL@g_To_You!}$
CRYPTO
easy_real
签到。
1 | from hashlib import * |