菜鸡发现Flag似乎并不一定是明文比较的
拿到附件,放入IDA,得到伪代码
看关键代码,从26行到35行,此处是将v4的前17个字符复制到v10里,而在第36行可以看出,只有当v10和v13(内容在第15行赋值为"437261636b4d654a757374466f7246756e")相同时才能输出success。
我们分析一下,在31行,v8经过sprintf赋值为v4在字符串asc_408044得到格式化字符串内容。查看字符串asc_408044的内容。
也就是说,31行可以写为:
sprintf(&v8,"%x",v4);
这句话讲v4的每一个字符都以ASCII码的十六进制形式以字符串格式化并复制给v8
再由v8经strcat()连接到v10,最后,v10同v13(“437261636b4d654a757374466f7246756e”)进行比较。
所以我们只需讲v13