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}