flag - pwnable
1.获取题目
题目给出下载链接:程序
2. 运行程序、查看文件类型、保护措施
直接运行输出提醒 将flag变量在放在什么地方了,要求我们去找。
是一个64位动态链接的elf
发现Packer是UPX
3.分析源码
将题目所给程序放入IDA中分析,导入之后发现函数异常的少,注意一点没有运行时提示给我们的malloc()函数
结合前面查看到程序有一条Packer属性,我们怀疑程序是有壳的。也就是说我们不能直接查看程序本体,需要脱壳。
我们也在汇编代码中发现了 UPX 的代码段
UPX是一款可执行文件的压缩器,我们可以在linux下对程序解压后,再使用IDA分析
#没有安装UPX,执行下行命令安装
sudo apt-get install upx
#解压文件
ups -d [filepath] -o[newfilename]
将解压程序放入IDA中,可以发现非常多的函数
在main函数的伪c代码中,发现flag变量,(双击变量)查看值
flag指向了aUpxSoundsLikeA,那我们就继续查看其值
aUpxSoundsLikeA的值是一个字符串’UPX…? sounds like a delivery service[这里替换为一个空格]:)’
所以答案就是UPX…? sounds like a delivery service[这里替换为一个空格]:)
4. 总结
- IDA分析程序时,发现函数异常少或者缺失关键函数,则可能程序有壳或被压缩
- UPX压缩标志:程序文件属性有Packer UPX;汇编代码接近结尾处,有aUpxSfnet代码