avatar

pwn环境搭建

写在前面

刚学习的pwn的时候首先要学习如何搭建自己的环境,为了让我们更多的关注知识本身,不要被一些环境搞问题搞的焦头烂额失了智XD。之前一直用的peda,因为最近要开始堆的学习,pwngdb显然是最好的选择,安装到一半因为国内连接的原因time out 443,然后一直是这个问题,就算可以连接速度真的是让人着急…所以打算重新布置一下自己的环境,由于环境布置不是关注问题的本身,所以推崇简单,一句话完成的事情绝不两句,懒人们有福了XD

虚拟机选择

现在对pwntools和pwn的各种插件,做pwn时候的libc库等等,官方文档说最友好的就是ubuntu 12.04 and 14.04了。但是系统还是太老了,其它东西安装的也不方便,所以我选择了16.04这个版本。

下载地址:

http://old-releases.ubuntu.com/releases/16.04.4/

安装vim

因为新系统默认vim功能是不完全的,可以读,但不可以写。

1
sudo apt-get install vim

更换源

更换pip源和系统源,这样就不会有连接的问题了,关键是速度快,速度快,速度快~重要的事情说三遍。

Pip

1
2
cd ~ && mkdir .pip
cd ~/.pip && touch pip.conf

然后把下面的内容写到pip.conf里面去,以后使用pip安装就会从国内的源拉取了。

1
2
3
4
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host=mirrors.aliyun.com

系统源

安装源的时候先备份一下

1
sudo cp /etc/apt/sources.list /etc/apt/sources.list.old

清华大学的源:

https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/

选择16.04 LTS

然后把更换为国内的源,把里面的内容替换。

1
sudo vim /etc/apt/sources.list

更新一下仓库

1
sudo apt-get update

安装Pwntools

这里直接给出官方的安装方法

1
2
3
4
$ apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
$ pip install -U setuptools
$ pip install --upgrade pip
$ pip install --upgrade pwntools

安装Pwngdb

1
2
3
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

安装libcdatabase

1
2
3
4
cd ~
git clone https://github.com/niklasb/libc-database.git
cd libc-database
./get

安装ssh

1
$ sudo apt-get  install ssh

在 /etc/ssh/ssh_config 文件中把22前面的#去掉

目前想到的就这么多以后有什么再补~

继续更,可能会出现的一些问题。

安装32位程式支持

1
$ sudo apt-get install libc6-dev-i386

pip无法使用

在Ubuntu中,升级了pip,再次使用pip 安装相关的python包的时候就出现以下错误。

1
ImportError: cannot import name main

解决方法

sudo vi /usr/bin/pip
将里面的内容换成下面脚本

1
2
3
from pip import __main__
if __name__ == '__main__':
sys.exit(__main__._main())

在导入pwn时出现如下错误提示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
>>> from pwn import *
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwn/__init__.py", line 4, in <module>
from pwn.toplevel import *
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwn/toplevel.py", line 20, in <module>
import pwnlib
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwnlib/__init__.py", line 43, in <module>
importlib.import_module('.%s' % module, 'pwnlib')
File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwnlib/dynelf.py", line 56, in <module>
from pwnlib import elf
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwnlib/elf/__init__.py", line 9, in <module>
from pwnlib.elf.corefile import Core
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwnlib/elf/corefile.py", line 84, in <module>
from pwnlib.elf.elf import ELF
File "/home/matedealer/Dokumente/Uni/TUD/Masterarbeit/test_blue/venv/lib/python2.7/site-packages/pwnlib/elf/elf.py", line 54, in <module>
from elftools.elf.enums import ENUM_P_TYPE
ImportError: cannot import name ENUM_P_TYPE

解决方法

找到报错的elf.py,大概在这个位置/usr/lib/pythonXX/site-packages/pwnlib/elf/elf.py

54行和1749行的 ENUM_P_TYPE修改成ENUM_P_TYPE_BASE

ssh连接问题

如果出现之前ssh连接的ip和重新安装后的系统的ip一样,会出现这个报错信息

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

解决方案

ssh-keygen -R XX.XX.XX.XX eg ssh-keygen -R 192.168.5.131

##虚拟机启动问题

启动ubuntu虚拟机时遇到Host SMBus controller not enabled

sudo vim /etc/modprobe.d/blacklist.conf
在配置文件的末行插入:blacklist i2c_piix4
sudo reboot

Author: CarlStar
Link: http://yoursite.com/2018/09/03/pwn%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.

Comment