0x00 介绍
本题是xctf攻防世界中Reverse的新手第五题。
根据题目描述:菜鸡拿到了一个被加壳的二进制文件
,可以知道这次的二进制文件被加壳处理了,因此需要先查壳,脱壳,再进行逆向分析找到flag
实验环境:IDA Pro 7.0
0x01 解题过程
1.1 判断文件类型
在Vscode中安装插件:hexdump for VSCode
,用Vscode打开,显示文件的十六进制:
可以看到文件的开头有 ELF
,说明这是一个在Linux下的可执行文件;相应的,如果再文件开头看到 MZ
,说明是在Windows下的可执行文件;
用IDA打开原始文件simple_2,可以看到识别出来的函数很少,应该就是被加壳了
1.2 脱壳
首先应当查壳,可以用PEID查。
在ctf比赛中的pwn大多在Linux下,一般linux下很少有强力的壳,利用upx工具对该二进制文件进行脱壳
upx.exe -d D:\ctf-learning\reverse-engineering\xctf\ExerciseArea\005\simple2 -o simple2_upx
得到脱壳后的二进制文件: simple2_upx
用IDA打开,可以看到识别出来的函数变多了
1.3 逆向分析
用IDA打开,可以看到main函数中,需要输入96个字符,然后将用户的输入与一个字符串比较。可以看到字符串是 flag{...}
的形式。因此,到这里为止就拿到了flag:
flag{Upx_1s_n0t_a_d3liv3r_c0mp4ny}
这题考察的就是查壳和脱壳了,逆向分析这块不是考察重点。