re学习第3天(求解ez_re.exe)
·
先用Exeinfo PE来检测是多少位,是否带壳

看见是带UPX压缩壳我们用upx脱壳工具来进行,将该文件移入upx文件夹
在上方写cmd进入指令板;

输入上面的指令.\upx.exe -d .\ez_re.exe显示;

这里应显示
Unpacked 1 files.(我是提前就解码了),获得没有壳的文件;

用ida64位打开,按下tap键,可以看见源代码;

我们来分析源代码的逻辑:从_main()函数中的scanf函数开始分析;
S要进行两次加密一次是在for循环进行f3加密,后在进行funs加密;
我们要检查一下这两个加密代码先看f3;

发现是将输入的字符串顺序颠倒;
我们写一个脚本(这里不要忘记for循环,因为我忘了😂);

在偶数次循环之后倒置的情况消失了;

算是没加密;
我们再看func加密算法

当你了解base64算法,就明白他是base64加密,
应为有个明显的标志,就是绿色字符串
我们可以想想为什麽解码后就是flag,
可以看到在strcmp是比较s与a,
再往上看发现a也进行过base64加密,
那我们将a加密字符串获取出来
我们用base64解码工具解码(网上有)

获取到a的源字符串
HDCTF{Y0u_h@v2_/\/\@57er3d_7he_r3v3rs3}
把这个当作s再进行一次base64加密,可以与a相同
则HDCTF{Y0u_h@v2_/\/\@57er3d_7he_r3v3rs3}为flag

此题已解;
更多推荐


所有评论(0)