知识点:查壳工具的使用,UPX一键脱壳工具的使用,IDA的使用
原题链接
wp
-
第一步,丢进
exeinfo pe
工具查壳,得到:可以看到是UPX壳的64位文件 -
既然知道了是UPX壳那就脱壳吧!使用upx脱壳工具脱壳
-
然后,再丢进
exeinfo pe
工具查壳,得到:可以看到没有壳了 -
丢进IDA分析,由上面的查壳我们知道该文件是64位文件,故丢进64位IDA
-
进入后
shift + f12
查看字符串,得到:看到一个感觉很关键的字符串flag{%s}
-
双击进入后
ctrl + x
查看交叉应用,然后跳转到汇编界面:然后f5
查看伪代码:分析代码可知,flag
是字符串Str
,Str
是由aHelloctf
字符串,每个字符的ascii码乘2减69得到。 -
点击
aHelloctf
字符串,跳转到:可以看到aHelloctf[] == "HELLOCTF"
-
然后随便敲个代码把flag算出来:运行后得到flag:
#include<bits/stdc++.h>
#define close(); std::ios::sync_with_stdio(false);cin.tie(0),cout.tie(0);
using namespace std;
signed main(){
close();//宏定义函数,关闭同步流
//下面是主要内容
string aHelloctf = "HELLOCTF";
for(int i = 0; i < aHelloctf.size(); i++)
cout<< (char)(aHelloctf[i] * 2 - 69);
return 0;
}
本篇完……
有诸多不足之处,望各位大佬不吝笔墨,给予我宝贵建议