题附件:
链接:https://pan.baidu.com/s/1d7Qq5XaQFXtGBIOUdOFJYQ 密码:w8vi
第一步:
看到是一个exe后缀的程序,所以使用查壳工具DIE看是否有壳。
发现是一个无壳的PE文件,且是64位的一个程序。
第二步:
用工具010editor打开程序,我们也可以很明显的看到这是一个PE文件,并且是在windows上运行的一个程序。
第三步:直接使用工具IDA64位打开程序,你可以直接看到这是一个已经经过简化的一个go语言写的一个逆向程序,所以我们可以直接就找到相应的main_main函数。并且F5直接查看伪代码。
然后分析:
第四步:我们回过头来看,我们直接搜索字符串,yes,flag(%s)
可以看到在字符串的上面是有一个字符串的,那我们可以看到h3ll0_w0rld的字符串,i/o是表示一个输入流,那么也就是猜测,当我们输入h3ll0_w0rld,这个字符串的时候,go内存就已经超时丢失了,那么就直接输出flag的结果。
第五步:验证自己的猜测:
请记得一定要在windows的环境下运行程序。
证明猜测正确。
但是你也可以进行一步一步的逆向分析,直接看汇编代码。然后使用windows下的gdb环境进行一步步的调试,最后得到结果。