1.查壳。
无壳,32位。
2.IDA反编译。查看字符串。
可以看到两个输入(第六行,倒数第九行)
分别跟进,
第一处:很简单的异或
第二处:base64加密
分别解密:拼接提交(卧槽),不对(还是天真)
第一处:Re_1s_So0_funny!
第二处:a1s0_pWn
3.看了看大佬的wp才知道是栈溢出。
在第一处加密后的函数sub_4013ba()中:在第一个strcpy()中把16位的copy到12位的引起栈溢出。
(原来是通过输入的flag产生溢出,然后用flag中的隐藏函数的地址(地址为40233D)覆盖,促使程序调用隐藏函数sub_40233D。)
所以在两个字符串要加上chr(0x3D)chr(0x23)chr(0x40)
4.get flag
flag{Re_1s_So0_funny!=#@a1s0_pwn}