0x01 pwntools介绍
pwntools从名字上看像是在解PWN题目使所用的工具,没错,确实使的,他使基于Python的,就是Python中的一个库,但是这个库很强大,里面包含了很多方法,比如连接可执行文件,进行读写通信,还可以生成shellcode以及将ams转化为shellcode。下面将仔细讲述这款工具的安装,这款工具在安装的时候会遇到坑,博主也是在论坛提问最终才找到解决方案。
0x02 基础环境
- kali Linxu操作系统,其实只要是Linux就行,Ubuntu支持更好,注意操作系统位数,最好使X64的,因为在X32下会有些函数用不了。
- Python2.7 ,这款工具对Python2.7的支持是最好的,当然也支持Python3.X,但是还是2.7版本更好一些。
- pip工具,Python下面的一个安装工具,可以很方便的管理Python库,很久之前pwntools是不支持pip安装的,但是现在经过更新以及支持了,网上很多安装教程都是从gitHub下在安装包进行安装,有时候还需要安装依赖,现在完全不必要。
0x03 开始安装
使用如下命令进行pwntools的安装:
1 |
root@kTWO:~# pip install pwntools |
这个过程可能会很漫长,最后会提示Successful,毫无报错,下面我们来使用一下。
导入pwn包:
1 2 3 4 5 |
root@kTWO:~# python Python 2.7.15+ (default, Aug 31 2018, 11:56:52) [GCC 8.2.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from pwn import * |
当我们按下回车的时候,我尼玛,好多错误:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/dist-packages/pwn/__init__.py", line 4, in <module> from pwn.toplevel import * File "/usr/local/lib/python2.7/dist-packages/pwn/toplevel.py", line 20, in <module> import pwnlib File "/usr/local/lib/python2.7/dist-packages/pwnlib/__init__.py", line 43, in <module> importlib.import_module('.%s' % module, 'pwnlib') File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module __import__(name) File "/usr/local/lib/python2.7/dist-packages/pwnlib/dynelf.py", line 56, in <module> from pwnlib import elf File "/usr/local/lib/python2.7/dist-packages/pwnlib/elf/__init__.py", line 9, in <module> from pwnlib.elf.corefile import Core File "/usr/local/lib/python2.7/dist-packages/pwnlib/elf/corefile.py", line 84, in <module> from pwnlib.elf.elf import ELF File "/usr/local/lib/python2.7/dist-packages/pwnlib/elf/elf.py", line 54, in <module> from elftools.elf.enums import ENUM_P_TYPE ImportError: cannot import name ENUM_P_TYPE |
emmmmm此处一脸懵逼
我也是既Google又百度,结果全网都没有和我遇到相似问题的,我又下载了kali32位版本的虚拟机,结果仍然也是这样,真的没办法了,去了某论坛求助,经过几天的悬赏,终于有人帮我解决了。相信很多人都会遇到和我相似的问题。
0x04 报错解决方案
- 根据报错我们定位到文件:/usr/local/lib/python2.7/dist-packages/pwnlib/elf/elf.py
- 使用编辑器,将文件中所有的ENUM_P_TYPE改为ENUM_P_TYPE_BASE,一般在54行和1749行。
- 问题解决,重新运行。
改成上面图片中的样子即可。
重新运行脚本,发现不会报错了,下面试一下进本的函数是否可用:
1 2 3 4 5 6 7 |
root@kTWO:~# python Python 2.7.15+ (default, Aug 31 2018, 11:56:52) [GCC 8.2.0] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> from pwn import * >>> asm('xor eax,1') '\x83\xf0\x01' |
我们发现asm()函数可以正常执行。这说明我们的安装暂时是没有问题的。
0x05 补充
如果上面的方法你仍然无法安装可尝试先安装下面的依赖:
1 2 3 |
git clone https://github.com/aquynh/capstone cd capstone make |
等到编译完成后执行安装命令即可
1 |
make install |
然后尝试重新安装
2019年12月4日 22:01 沙发
留言,持续关注博主中。同进步。