中国顶级CTF竞赛网络安全大赛--2022网鼎杯re2解题思路

一、脱壳

PEID查不出来,用了die,显示是UPX3.96的壳,用了脱壳机,脱不了,只能手动脱壳,拖入x64dbg,F9运行到程序领空,很明显的特征,push:

无脑使用ESP定律大法,对ESP下硬件访问断点:

F9运行,在pop处停下:

F4运行到下面第一个jmp,F8,进去又是一个jmp,继续F8,到达OEP:

使用x64dbg插件dump:

第一步先dump保存,然后第二步,第三步,第四步选择刚才dump保存的程序:

脱壳成功,但是运行一闪而过,这是动态基址搞的鬼,手法很多,有脱壳机有禁用动态基址选项,这里我们直接把程序拖入010Editor修改标志位,改为20即关闭动态基址,保存退出:

可正常运行,接下来分析算法。

二、算法分析

1、进入主函数(很明显是vs写的程序,根据步骤找主函数就行)
F9进入程序领空,进入第一个call:

再进入第二个call:

找特征码,进入标记的call:

进入第四个call:
走过一个跳转,进入主函数:

2.动态调试
标记的函数是输入flag后第一个call,并且传参进去,所以这里可以跟进去看一看:
随便输入一部分数,回车并跟进标记函数:

从下面可以看到这边传入我们输入flag,是关键函数,跟进去:
分析函数:
可以猜到flag的长度为20,如果不是20,直接到打印错误的地方,继续向下看,下面对字符串进行第一次处理。亦或66,继续看下去,又是一个比较长度函数,之后没什么了,这个函数结束,直到返回主函数:
下面就是打印wrong,长度为20会跳过这个打印:
我们看当前标记的函数,传入参数是我们flag亦或66之后的字符串,绝对关键函数,跟进去,F8一直运行:

我们发现又对字符串处理,先+A,再亦或50:

继续运行发现关键函数,F8走过直接失败,重新到这个位置,发现传入处理后的第一个字符,跟进去:
我们发现一个cmp,和我们字符串第一个字母比较:
查看另一个地址的值:
继续跟,会发现直接退出,所以这里是比较函数
##最后
对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。

同时每个成长路线对应的板块都有配套的视频提供:


当然除了有配套的视频,同时也为大家整理了各种文档和书籍资料&工具,并且已经帮大家分好类了。

因篇幅有限,仅展示部分资料,有需要的小伙伴,可以【扫下方二维码】免费领取:

猜你喜欢

转载自blog.csdn.net/text2206/article/details/129494879