MeePwn2018
Contents
翻译
本文另有 英文版本。
image-crackme
想用 IDA Pro 逆向,结果打开到一半就崩溃了,只能靠猜了。试着运行几次 image-crackme.exe,发现生成的 MeePwn.ascii 的内容总是 160x160 的一大堆乱七八糟的字符,同时目录下还有一个 MeePwn.jpg,尺寸同样是 160x160,而且缺少这个文件程序就没法运行。推测图片中的像素和输出有某种联系,用画图做了一张 160x160 的纯白色图片替换了原来的图(为了使所有的像素都相同),然后试着输入 0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}(ASCII 48–126)作为 key,产生了十分有规律的输出:

这个 pattern 就很有意思了,可以推测输入的 key 是被循环扩展到 160x160(即 ABCDEF -> ABCDEFABCDEF…),然后每个字节分别和 MeePwn.jpg 中对应的像素进行某种运算,才会产生这种循环的输出。
题目提示说 flag 是 MeePwn{…} 的形式,可以根据这一特点,用不同长度的 flag 作为输入,比较输出的 MeePwn.ascii 和 MeePwn.ascii.bak 中相同符号的个数,从而得出 flag 的真正长度。
| |
结果中 key 长度为 33 时相同符号个数明显高于其他(同样高的还有 33 的因数 11),因此 flag 长度为 33。得到这一长度后,只要逐字符爆破就可以了,即比对 key 中某个字符循环扩展后所在位置上相同符号的个数。
| |
flag:MeePwn{g0l4ng_Asc11Art_1S_4wS0me}
不得不承认自己和真正的 CTF 选手还是有很大的差距的,别的题看的一头雾水,毫无思路。