writeup

首先查壳,并没有壳而且是个C++写的程序

运行这个程序,随意输入几个字符发现字符少于八个的话它会继续让你输入,超过八个但不是正确的flag会闪退

先拖入OD查看,找到关键点

下断点的call为关键call,进去之后发现算法

仅用OD无法分析出算法是什么,于是用IDA看看。查找字符串,找到关键点

f5反汇编成伪代码之后,找到关键函数。分析伪代码最后得出一串数字28939898

但是还是不是正确的flag,再次回到OD,依次输入八个0到八个7,发现他们都有一一对应的数字(01234567->89226139),将上面得到的那串数字找出与89226139对应的数字,得出其中一串数字20161010。此题flag不唯一,能组合成的都是flag。