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模板文件尾之后还存在许多0x20和0x09字符,即space和tab,也就是俗称的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
白页的种类比较多,这里是采用古典密码学中常用的字符替换手法。将0x09和0x20替换为0和1再以二进制进行解码为字符即可。
对于这题白页,其实有一个比较明显的特征,结尾8字节是09 20 20 20 20 20 09 20,发现正好对应}字符的二进制01111101,所以就知道对应的替换字符了。
然后还有,这题的白页可能并不好提取,因为010的png模板给出的文件尾标注位置是错误的,所以可能会提取多了或少了,这里有一个办法是从后往前提取,长度必然是8字节的整数倍,所以提取到png模板文件尾附近正好8字节的地方就行了。

flag
flag{wuhuqifei}





Comments NOTHING