看到这个名字的时候,我就感觉出题人会使用溢出来出题,因为我见证了溢出类题目的发展,从17年的秋季赛的第二题,再到lctf2017我自己出题用了,所以取这个名字,我非常的怀疑。
先试运行下:输入错误直接就退出了https://bbs.pediy.com/upload/attach/201903/732490_MCA27R3A9A9SDZS.jpgpeid看下存在des加密。然后拖入ida分析,根据提示字符串,然后找到主流程:传入了sub_4021f0这个函数:比较输入的第八个字符往后的此符传是不是X1Y0uN3tG00d然后返回进入另外一个函数:flag的长度为24然后进入sub_4013b0验证:sub_401380是:说明输入是应该是0-9之间的数字,然后转为整数,那个里边是方程:一开始z3解不对,后来用手解的,其实就是一个整数的方程,注意千、百、十、个位的系数相等就行了。这里就不列方程了,那张纸被我搞丢了。最终解出来是:xxxxxxx(抱歉我真的忘了)
然后进入,最后一阶段,溢出,溢出到哪儿呢?
还记得刚才一开始peid看到的那个des么?我们看在哪里用到了他。0x407080.来到ida,然后看引用pbox表的地方,然后一步一步往上找,然后可以找到这个函数:这个函数就是对最后一段flag进行验证的函数,我们看他的地址是多少?0x4018b0然后我们看:溢出的时候,最高位为0,所以flag[23]=k接下来应该是40,所以flag[22]=chr(0x40+3)=C然后是0x18,flag[21]=0x1b+0x46=a然后是0xf0mflag[20]=0xf0+0x58?不对这里其实有个整数溢出,轮回到f0,其实应该是H,这个可以算下,或者结合出题人的名字猜吧。Hacky。应该是西安某个高校的。进入到最后一段的验证流程:这个流程是des加密用到的地方,这里是初始化key,然后进入real_check这个流程,des加密然后与目标加密结果比较:然后提取出来,des解密:脚步如下:
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课