pwntools是一个CTF框架和漏洞利用开发库,用Python开发,由rapid设计,旨在让使用者简单快速的编写exploit。

pwntools对Ubuntu 12.04和14.04的支持最好,但是绝大多数的功能也支持Debian, Arch, FreeBSD, OSX, 等等。

安装前确保安装了Binutils、Capstone、Python Development Headers等系统库

官方文档:http://docs.pwntools.com/en/stable/

-----------------------

本文将基于Kali Rolling 64位安装,Ubuntu64位安装也是类似的(毕竟pwntools对Ubuntu支持是最好的)。

暂时不会有windows安装法。

关于kali2 32位或者其他32位系统也是很难弄,本文后面会有一番折腾(但也不是所有功能都可以用)

0x00 不定时的更新补充

-= 2018年1月补充 =-

现在安装方法可以很简单:

pip install pwntools

-= 2019年5月补充 =-

在ubuntu上pip安装,建议先

apt-get install -y python-dev python-pip libffi-dev libssl-dev
pip install -U setuptools
pip install cryptography==2.4.

-= 2020年4月补充 =-

pip安装的各种报错

  File "/usr/share/python-wheels/urllib3-1.13.1-py2.py3-none-any.whl/urllib3/util/retry.py", line , in increment
total -=
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'

由于国内网速的原因,推荐换个清华源

pip install pwntools -i https://pypi.tuna.tsinghua.edu.cn/simple/

报错:

    File "<string>", line , in <module>
IOError: [Errno ] No such file or directory: '/tmp/pip-build-jbiHJq/unknown/setup.py' ----------------------------------------
Failed building wheel for unknown

此乃一个bug,无视它即可,重新执行语句就不报错了。

如再报错:

AssertionError: zipp>=0.5 .dist-info directory not found

这是zipp在清华源下找不到相对应的版本,推荐个国外源piwheels

pip install pwntools -i https://www.piwheels.org/simple/

-= 2019年10月补充 =-

pwntools支持python3

apt-get update
apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
python3 -m pip install --upgrade pip
python3 -m pip install --upgrade git+https://github.com/Gallopsled/pwntools.git@dev3

(如果有各种报错,欢迎留言)

-----------------------

0x01 安装Capstone

Capstone disassembly/disassembler framework: Core (Arm, Arm64, M68K, Mips, PPC, Sparc, SystemZ, X86, X86_64, XCore) + bindings (Python, Java, Ocaml)

在终端输入

git clone https://github.com/aquynh/capstone
cd capstone
make
make install

(这里很顺利)

0x02 安装pwntools

在终端输入

git clone https://github.com/Gallopsled/pwntools
cd pwntools
python setup.py install

如果没报错,并且终端输入python进入其交互模式后,输入import pwn回车后没报错,差不多就好了。

这时候再尝试pwntools的asm功能

>>> pwn.asm("xor eax,eax")
'1\xc0'

如果有正确输出,即说明这个功能是可以用的,到这里就算安装完成

(如果想了解更多asm可以访问: http://docs.pwntools.com/en/stable/asm.html

0x03 安装pwntools时出现的各种错误

Err1:

fatal error: openssl/e_os2.h: 没有那个文件或目录

要解决这个问题,只需要安装OpenSSL 开发包

apt-get install libssl-dev

Err2:

error: Installed distribution pyasn1 0.1. conflicts with requirement pyasn1>=0.1.

把pyasn1(ASN.1 library for Python)更新即可

git clone https://github.com/etingof/pyasn1
cd pyasn1
python setup.py install

0x04 使用asm功能报错

[!] Your local binutils won't be used because architecture 'i686' is not supported.
[!] Could not find 'as' installed for ContextType()
Try installing binutils for this architecture:
https://pwntools.readthedocs.org/en/latest/install/binutils.html

大概就是Binutils库不支持i686这种32位架构(Binutils 是一组开发工具,包括连接器,汇编器和其他用于目标文件和档案的工具。)

我访问了里面的链接地址,下面是里面的安装方法:

apt-get install software-properties-common
apt-add-repository ppa:pwntools/binutils
apt-get update apt-get install binutils-$ARCH-linux-gnu # $ARCH is your target architecture (e.g., arm, mips64, vax, etc.).

我在kali2 32位执行到第2句会报

aptsources.distro.NoDistroTemplateException: Error: could not find a distribution template for Kali/sana

诶- -。伤感,然后我看那链接里后面的一个sh,里面写得不好(rm后还能tar解压。。),即使我修改后运行sh也解决不了这个asm问题。

在我绝望的时候,我觉得可以去github找找,果然让我找到了一个pwntools-binutils项目

git clone https://github.com/Gallopsled/pwntools-binutils
cd ubuntu
chmod +x install_all.sh
./install_all.sh arm #your architecture

项目里面ubuntu文件夹有一个install.sh和install_all.sh,但我试了./install.sh arm找不到安装包后,我就只好尝试./install_all.sh arm安装所有。

这一试,也让我知道Binutils库目前支持的架构。

以下的安装包是存在的(其架构也是被支持的):

binutils-aarch64-linux-gnu
binutils-mips-linux-gnu
binutils-powerpc-linux-gnu

而下面这些安装包暂时是不存在:

binutils-alpha-linux-gnu
binutils-arm-linux-gnu
binutils-avr-linux-gnu
binutils-cris-linux-gnu
binutils-hppa-linux-gnu
binutils-ia64-linux-gnu
binutils-m68k-linux-gnu
binutils-mips64-linux-gnu
binutils-msp430-linux-gnu
binutils-powerpc64-linux-gnu
binutils-s390-linux-gnu
binutils-sparc-linux-gnu
binutils-vax-linux-gnu
binutils-xscale-linux-gnu
binutils-i386-linux-gnu
binutils-x86_64-linux-gnu

所以暂时不被支持的架构下是无法安装好Binutils库,也就无法使用asm功能。

0x05 等pcat以后更新:)

http://pcat.cnblogs.com

pwntools安装使用方法的更多相关文章

  1. 安装Birt方法

    安装BIRT 方法: 博客地址:http://www.mamicode.com/info-detail-850588.html 注意:在 Install new Software 中输入地址:http ...

  2. linux php安装扩展方法 查找配置文件

    如何在linux中查看nginx.apache.php.mysql配置文件路径了,如果你接收一个别人配置过的环境,但没留下相关文档.这时该怎么判断找到正确的加载文件路径了.可以通过以下来判断 1.判断 ...

  3. node安装插件方法

    node安装插件方法有几种,这里列出常用的两种方法: 方法1: 进入要安装插件的目录,直接用 npm 软件安装包安装,如(安装express): cd /project npm install -g ...

  4. windows server 2008见安装IIS方法(解决)

    windows server 2008见安装IIS方法(解决) 刚开始有点蒙,后来才知道原来如此.! . 右键点击[我的电脑]--[管理]--[字符]--[加入角色]--仅落后win7像.啊! 版权声 ...

  5. elasticsearch+kibana+metricbeat安装部署方法

    elasticsearch+kibana+metricbeat安装部署方法 本文是elasticsearch + kibana + metricbeat,没有涉及到logstash部分.通过beat收 ...

  6. RHEL6下获取安装包(RPM)而不安装的方法

    RHEL6下获取安装包(RPM)而不安装的方法 有时候我们只能在某个机器上网获得RPM安装包,如何将RPM包在不能上网的内网机器安装,就需要能将安装包下载到本地而不安装,然后再把这些包复制到内网机器, ...

  7. 哈希长度扩展攻击(Hash Length Extension Attack)利用工具hexpand安装使用方法

    去年我写了一篇哈希长度扩展攻击的简介以及HashPump安装使用方法,本来已经足够了,但HashPump还不是很完善的哈希长度扩展攻击,HashPump在使用的时候必须提供original_data, ...

  8. windows Sever 2012下Oracle 12c安装配置方法图文教程

    windows Sever 2012下Oracle 12c安装配置方法图文教程 Oracle 12c安装配置方法图文教程,具体内容如下 1.我们开启虚拟机 2.Windows Sever 2012启动 ...

  9. 安装rcssmin方法

    #安装rcssmin方法'''pip install wheelpip install rcssmin --install-option="--without-c-extensions&qu ...

随机推荐

  1. android 强制设置横屏 判断是横屏还是竖屏

    判断activity 是横屏还是竖屏  方法 1: //根据设备配置信息 Configuration cf= this.getResources().getConfiguration(); //获取设 ...

  2. ceph优秀博文

    ceph官方博文: http://ceph.com/community/blog/ rgw根据rgw用户来分pool存放数据 http://cephnotes.ksperis.com/blog/201 ...

  3. 简单C#文字转语音

    跟着微软走妥妥的,C#文字转语音有很多参数我就不说了,毕竟我也是初学者.跟大家分享最简单的方法,要好的效果得自己琢磨喽: 先添加引用System.Speech程序集: using System; us ...

  4. office2010安装出错,windows installer服务不能更新一个或多个受保护的windows文件

    转自:http://www.08lr.cn/article/1985.html office2010安装过程中出现如下图错误:windows installer 服务不能更新一个或多个受保护的wind ...

  5. jjjjQuery选择器

    此文为作者自用复习文章 jQuery选择器: 它不仅继承了CSS选择器简洁的语法, 还继承了其获取页面便捷高效的特点, 它还拥有更加完善的处理机制: 但jQuery选择器获取元素后,为该元素添加的是行 ...

  6. 百度editor调用【图片上传阿里云】

    百度editor调用简单,但是图片和文件上传阿里云就有点难度了.下面我详细说一下. 百度富文本编辑器下载地址:http://ueditor.baidu.com/website/download.htm ...

  7. C++小知识之Map用法

    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作! 1. map最基本的构造函数:    map<st ...

  8. 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息

    简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 简单的scrapy实战:爬取腾讯招聘北京地区的相关招聘信息 系统环境:Fedora22(昨天已安装scrapy环境) 爬取的开始URL:ht ...

  9. JavaScript之转义字符

    <html lang="en"> <head>   <meta charset="UTF-8">   <meta na ...

  10. jQuery入门第三

    jQuery入门第三 1.HTML 2.CSS 衣服 3.javascript 可以动的人 4.DOM 编程 对html文档的节点操作 5.jQuery 对 javascript的封装 简练的语法 复 ...