西普学院逆向writeup ---------你会吗??
--------跳跳龙
明天我们学校就要ctf比赛,深夜前10几分钟正好解了一道逆向题,是西普学院的,昨天,在小强的提醒下,也解了一道,今天就写写自己的writeup,写完睡觉。
首先拿到re1.exe。运行一下,欢迎我来到DUTCTF。说实话,我都没在意,接下来,随便输入了123456.提示错误。
接下来,我就放在IDA里看了一下,(友情提示:大家可以尝试一下只做自己的sig文件,使逆向效果更加完美),流程非常清晰,感觉不是很难。
接下来,发现,sub_40127B是输出函数,sub_4010D1是输入函数,并且自己的输入存在&v8中,与&v4进行比较,如果结果不相等,便提示不对。可见这个函数在执行时,也就是在同一个函数栈帧区间。内,v8在 [sp+20h],v4在[sp+0h]。可见有思路了,接下来OD闪亮登场,(话说逆向题就是OD与IDA的完美结合,分析加密算法)
首先我看了一下字符串,这些中文字符是找不到了,但是我们会看见pause这个词,就是在函数的末尾执行system(“PAUSE”)的时候,压入栈的。所以很快定位。然后便是执行函数,等待程序执行输入我们的数据,与真实的flag进行比对。此时我们输入123456之后,便压入了flag。
但是,思路并没有结束,v4和v8地址相差0x20,v8=bp-24h=0038fd78-24=38fd54,v4=0038fd34.正好相差20h,和我们预想的一样。明天考试,滚去睡。。。