题目链接:http://ctf5.shiyanbar.com/reverse/recursive/recursive_python

运行recursive_python之后,输出了一句话“You wish it was that easy!”,然后生成了三个ELF文件,又立马删除了。

 

搜索资料后得到信息,该可执行文件应该是用freeze.py将python文件打包成可执行文件的。想自己写个程序然后用freeze.py打包成可执行文件,然后跟recursive_python对比着看一下,但是把freeze相关的文件都放到python2.7文件夹下,使用freeze.py报错如下:

 

解决办法:

  1. 安装python2.7-dev、python2.7-example
  2. 添加软链接 ln -s /usr/lib/python7/config /usr/lib/python2.7/config-x86_64-linux-gnu/

这两步操作完之后使用freeze就不会报错了。

 

生成的可执行的hello 之后,使用IDA查看,和recursive_python基本一致,查看字符串尝试找到“Hello world...”,并未找到。(用gdb调试程序,然后使用find Hello可以找到字符串。)

 

没有办法了,只能按照别人的writeup来做了。

 

使用命令“gdb recursive_python”调试程序

b chmod ;给chmod函数下断点

r ;重新执行程序

 

断下来之后,发现生成的一个文件unstep_84fc2d39,使用“shell”命令,回到非调试状态,查看该文件属性,不可执行。

 

修改该文件权限,使其可执行,调试该文件,同样在chmod函数处下断点

 

断下来之后,生成了unstep_34a4d33b,对unstep_34a4d33b进行和unstep_84fc2d39一样的操作,生成了unstep_579c82e9,对unstep_579c82e9进行同样操作,生成了unstep_f67baaeb,使用gdb调试unstep_f67baaeb,“start”启动程序,“find flag”找到了flag。

flag{python_taken_2_far}

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐