WriteUp

首先开局一个压缩包,带密码和压缩注释,注释内容为011 111 1001 00 10 11 001 1100 0000 111 10 110 100 0 10 01 10 000 0000 0 10,这种不定长的二进制串比较像摩斯密码,替换为摩斯密码使用的.-后,.-- --- -..- .. -. -- ..- --.. .... --- -. --. -.. . -. .- -. ... .... . -.,进行解码,得到压缩包密码woxinmuzhongdenanshen。(摩斯密码不区分大小写,所以大小写需要自己尝试),解压得到最爱的马大叔.png儿歌.mp3

先看最爱的马大叔.png,拖入010查看,发现报错,直接前往底部,发现png模板文件尾后还有PK文件头,判断后续为zip文件,进行手工分离,得到最爱的马大叔.zip,打开发现存在flag.png,但是需要密码,那么可以判断密码应当在儿歌.mp3中。

儿歌.mp3拖入010查看,发现mp3模板文件尾后还有一串字符d3VodXRvbmd5YW8=,进行base64解码得到wuhutongyao,为最爱的马大叔.zip的压缩包密码。

解压最爱的马大叔.zip后得到flag.png,但是图上没有画出flag,于是拖入010查看,发现报错,直接前往底部,发现png模板文件尾之后还存在许多0x200x09字符,即spacetab,也就是俗称的Whitespace,我自己喜欢叫他白页

博客会对无意义的长空白字符进行删减,所以就转成16进制贴上来了。
09 20 20 09 09 20 20 09 09 20 20 09 20 20 09 09
09 20 20 09 09 09 09 20 09 20 20 09 09 20 20 20
09 20 20 20 20 09 20 20 09 20 20 20 09 20 20 20
09 20 20 20 09 20 09 20 09 20 20 09 20 09 09 09
09 20 20 20 09 20 09 20 09 20 20 20 09 09 09 20
09 20 20 09 20 09 09 20 09 20 20 09 09 20 20 09
09 20 20 09 09 20 09 20 09 20 20 09 20 09 09 20
09 20 20 20 20 20 09 20

白页的种类比较多,这里是采用古典密码学中常用的字符替换手法。将0x090x20替换为01再以二进制进行解码为字符即可。

对于这题白页,其实有一个比较明显的特征,结尾8字节是09 20 20 20 20 20 09 20,发现正好对应}字符的二进制01111101,所以就知道对应的替换字符了。

然后还有,这题的白页可能并不好提取,因为010png模板给出的文件尾标注位置是错误的,所以可能会提取多了或少了,这里有一个办法是从后往前提取,长度必然是8字节的整数倍,所以提取到png模板文件尾附近正好8字节的地方就行了。

flag

flag{wuhuqifei}