pwntools是一個CTF框架和漏洞利用開發庫,用Python開發,由rapid設計,旨在讓使用者簡單快速的編寫exploit。html
pwntools對Ubuntu 12.04和14.04的支持最好,可是絕大多數的功能也支持Debian, Arch, FreeBSD, OSX, 等等。python
安裝前確保安裝了Binutils、Capstone、Python Development Headers等系統庫linux
-----------------------git
本文將基於Kali Rolling 64位安裝,Ubuntu64位安裝也是相似的(畢竟pwntools對Ubuntu支持是最好的)。github
暫時不會有windows安裝法。ubuntu
關於kali2 32位或者其餘32位系統也是很難弄,本文後面會有一番折騰(但也不是全部功能均可以用)windows
-= 2018年1月補充 =-api
如今安裝方法能夠很簡單:sass
pip install pwntools
官方文檔:http://docs.pwntools.com/en/stable/架構
-= 2019年5月補充 =-
在ubuntu14.04上安裝,建議先
apt-get install -y python-dev python-pip libffi-dev libssl-dev pip install -U setuptools pip install cryptography==2.4.2
-= 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
---------------------------
一、安裝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
(這裏很順利)
二、安裝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)
三、安裝pwntools時出現的各類錯誤
Err1:
fatal error: openssl/e_os2.h: 沒有那個文件或目錄
要解決這個問題,只須要安裝OpenSSL 開發包
apt-get install libssl-dev
Err2:
error: Installed distribution pyasn1 0.1.7 conflicts with requirement pyasn1>=0.1.8
把pyasn1(ASN.1 library for Python)更新便可
git clone https://github.com/etingof/pyasn1 cd pyasn1 python setup.py install
四、使用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功能。
5:等pcat之後更新:)