pwn环境部署

发布时间 2023-11-03 23:06:50作者: fu37kola

PWN环境搭建

前言:自己开始学pwn时使用的是kali,稀里糊涂的配了点东西就用用了,后面都是用ctfshow配置好的集成环境,招新赛时有同学问我如何部署pwn环境,出现的各种问题令人鸡肋,于是就诞生了这 集各种博客的博客

tips:

1 建议新手按1 、2(3)、5、6、9、10、11走

2 如果师傅想装python2 建议先将其它工具装好后再装,或者 可以先装python2,然后将pip和python的软连接给改成自己所用python3和pip3 不然后续操作可能会因为 默认的python指向python2、默认pip指向pip2而出现问题

3 git项目拉不下来就直接到网页里面下,然后拉到相应的文件夹里

​ 国内的服务器还是别用curl命令了……安装不成功的

4 这里都是我自己的装机过程,没写报错就是我装的时候没有出错

5 若有错误,还请师傅改正

6 最基础环境的配置这里就没有详细描述了,望师傅自行下载安装(vmware虚拟机等工具)

7 有报错就要解决错误,不要有了错误就直接over了!!!多动用谷歌百度搜索类似错误问题

8 十分感谢杨师傅对这篇pwn环境搭建的补充与完善

虚拟机

vmware虚拟机

Vmtools

基础工具

vim

sudo apt-get install vim

git

sudo apt install git

gcc

ubuntu 22.04 中自带 gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

gcc --version   //查看版本

python2

sudo apt install python2 

python3

ubuntu 22.04 中默认python版本为 python 3.10.12

pip3

sudo apt install python3-pip

Pwn工具

pwntools

gdb

ROPgadget

one_gadget

seccomp-tools

LibcSearcher

进阶工具

qemu

gdb-multiarch

1:ubuntu 22.04部署

可照该博客安装:https://blog.csdn.net/dengjin20104042056/article/details/130477959

网上的配置方法都大同小异,这里就不过多赘述

到官网下载ubuntu22.04镜像 https://cn.ubuntu.com/download/desktop 选择最新版

下载完镜像后,使用相应的配置方法,构建ubuntu容器

直接到软件和更新里面换源(选择合适的源)我选的是华为云

img

2:安装vmtools

一:使用vmtools自带的vmtools便捷安装按键

但有些时候是灰色点击不了(网上有相应的解决办法,但是比较麻烦)

贴一个:https://blog.csdn.net/bxlover007/article/details/132616692

下载完成后解压、 sudo ./vmware-install.pl (该方法自行百度

二(推荐)命令行下载vmtools:

sudo apt update                                             //检测网址是否链接成功
sudo apt-get install open-vm-tools-desktop -y               //下载工具

3:vmtools发现不能实现文件互传

(挺重要的就单独提出来了)

我使用命令安装了vmtools后,能实现文字的复制黏贴,却不能够互传文件

https://blog.csdn.net/llljjlj/article/details/130598163

sudo gedit /etc/gdm3/custom.conf

#WaylandEnable=false ---> 删掉这行注释 (如下图)

接着重启虚拟机

reboot

img

4:pyenv(选装)

一开始考虑到 本地pyrhon环境为 3.10.12 会不会太高了,就想装这个python版本管理,结果发现python 3.10.12能支持后面装的工具

参考博客:http://www.kuazhi.com/post/367339.html

pyenv常用命令

pyenv versions                 # 显示所有已经安装的python版本
pyenv version                  # 显示当前设置的python版本
pyenv install --list           # 显示可以安装的python版本
pyenv install <version>        # 安装<version>版本的python
pyenv global <version>         # 设置全局状态的python版本
pyenv local <version>          # 设置当前目录(或其子目录)下的python的版本
pyenv shell <version>          # 仅为当前shell会话选择
pyenv uninstall <version>      # 卸载<version>版本的python

pyenv安装

安装依赖包

sudo apt install make build-essential llvm libssl-dev zlib1g-dev libbz2-dev librea

克隆pyenv源码

git clone --depth 1 https://github.com/pyenv/pyenv.git /usr/local/.pyenv

添加全局变量

vim /etc/profile

在profile最后里面添加

export PYENV_ROOT="/usr/local/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

更新一下

source /etc/profile

5:pwndbg安装(必备)

pip换源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

安装pwndbg相关工具

cd ~
git clone https://github.com/pwndbg/pwndbg.git
cd ~/pwndbg
./setup.sh

cd ~
git clone https://github.com/scwuaptx/Pwngdb.git
cp ~/Pwngdb/.gdbinit ~/

编辑配置文件

vim ~/.gdbinit

第二行插入 source ~/pwndbg/gdbinit.py

三个gdb插件便捷更换

git clone https://github.com/yichen115/GDB-Plugins
cd GDB-Plugins/pwndbg
git init
./setup.sh
vim ~/.gdbinit
里面插入:
source ~/GDB-Plugins/pwndbg/gdbinit.py
source ~/GDB-Plugins/gef/gef.py
source ~/GDB-Plugins/peda/peda.py
source ~/GDB-Plugins/peda-heap/peda.py

或者命令行:

pwndbg:     echo "source ~/GDB-Plugins/pwndbg/gdbinit.py" > ~/.gdbinit
gef:        echo "source ~/GDB-Plugins/gef/gef.py" > ~/.gdbinit
peda:       echo "source ~/GDB-Plugins/peda/peda.py" > ~/.gdbinit
peda-heap:  echo "source ~/GDB-Plugins/peda-heap/peda.py" > ~/.gdbinit

pwndbg小技巧

实现命令的输入和输出在不同终端窗口上

当我在左侧终端窗口pwndbg中调试时,pwndbg的输出出现在右侧终端窗口中,效果如下图:

img

vim ~/.gdbinit   

里面添加其中一项(或者自定义)

set context-output /dev/pts/1        //将shell用户中执行命令产生的输出放置到/dev/pts/1
set context-output /dev/pts/2     //将输出定向到 /dev/pts/2 

此时只要我们打开了 /dev/pts/1 或者/dev/pts/2 ,使用其它终端端口就能实现输入输出不同窗口

原配置视频:https://www.bilibili.com/video/BV1mr4y1Y7fW/?p=11&vd_source=8c182d1e4a80cc9f34dfe996135c2c23

6:pwntools安装(必备)

python3安装pwntools(默认pip为pip3,如果pip为pip2,可以看第12点中默认pip更改)

pip install --upgrade pip
pip install pwntools            

python2安装pwntools(需先安装python2,查看第12点)

pip2 install pwntools

7:peda安装

git clone https://github.com/longld/peda.git ~/peda

echo “source ~/peda/peda.py” >> ~/.gdbinit

8:gef安装

wget -q -O- https://github.com/hugsy/gef/raw/master/scripts/gef.sh| sh

wget -q -O ~/.gdbinit-gef.py https://github.com/hugsy/gef/raw/master/gef.py

echo source ~/.gdbinit-gef.py >> ~/.gdbinit

9:32位支持

安装32位程序支持

sudo apt-get install libc6-dev-i386

安装32位依赖库

apt-get install lib32ncurses5
apt-get install lib32z1

10:LibcSearcher(必备)

python3安装LibcSearcher

pip install LibcSearcher    

11:ROPgadget one_gadget (必备)

安装ROPgadget:

sudo apt-get install python-capstone
git clone https://github.com/JonathanSalwan/ROPgadget.git

拉不下来就用这个:

暂时无法在飞书文档外展示此内容

cd ROPgadget
sudo python setup.py install
python3 setup.py install --user || exit 1

安装one_gadget:

sudo apt install ruby
sudo gem install one_gadget

gem install 太慢解决方法

在我使用 sudo gem install one_gadget ,终端就一直卡在那里没变化

感觉是下载太慢了,于是找到 通过本地安装的方式安装gem 的方法

先进入 http://rubygems.org/ gem官网

搜索找到的gem,下载下来

img

gem install -l one_gadget-1.8.1.gem   //本地离线安装

img

缺少elftools依赖包

img

点击下面的elftools

注意 elftools >= 1.0.2, < 1.2.0

它默认版本是1.2.0 需要自行切换为1.1.3

img

依照上面的方法再装

sudo gem install -l elftools-1.1.3.gem

但是还是会报错 :缺少bindata

同上,再下载bindata.gem

sudo gem install -l bindata-2.4.15.gem

暂时无法在飞书文档外展示此内容

总结:

sudo gem install -l bindata-2.4.15.gem

sudo gem install -l elftools-1.1.3.gem

gem install -l one_gadget-1.8.1.gem   //本地离线安装

12:python2安装(注意)

暂时无法在飞书文档外展示此内容

sudo apt install python2     //安装python2
sudo python2 get-pip.py      //安装pip2
sudo python2 get-pip.py -i https://pypi.tuna.tsinghua.edu.cn/simple
(这里建议加上-i手动换源,不然真的太慢了)

pip2 install pwntools

但是当我们安装完python2 需要注意一下pip -V 是指向python3 还是python2(Python -V 命令同理)

若是指向python2,说明pip软连接被改成pip2的了

默认pip更改

mkdir -p ~/.local/bin
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
ln -s /usr/bin/pip3 ~/.local/bin/pip
pip -V

软链接修改

删除原软链接

rm -rf /usr/bin/python3
rm -rf /usr/bin/pip3
ln -s /usr/local/python3/bin/python3.10 /usr/bin/python3   //添加python3的软链接

ln -s /usr/local/python3/bin/pip3.10 /usr/bin/pip3         //添加 pip3 的软链接

(但是我先使用这种方法修改了pip的软链接,可是它依然指向了python2.7,于是找到了前面的方法更改了pip的软链接)

默认python3设置链接:https://blog.51cto.com/u_16213337/7111853

pip更改参考链接:https://blog.csdn.net/fjsupermouse/article/details/131118028

软链接更改:https://www.jianshu.com/p/a6646753af3c

13:glibc_all_in_one & patchelf

glibc_all_in_one

下面这篇博客写得挺清楚的,我也是跟着配完的

https://blog.csdn.net/weixin_49764009/article/details/124970461

git拉不下来用这个

暂时无法在飞书文档外展示此内容

sudo git clone https://github.com/matrix1001/glibc-all-in-one.git 
cd glibc-all-in-one/
sudo python3 update_list

patchelf

patchelf的使用教程推荐该师傅的博客:https://www.cnblogs.com/9man/p/17581934.html

暂时无法在飞书文档外展示此内容

git clone https://github.com/NixOS/patchelf.git 
cd patchelf
./bootstrap.sh 

14:seccomp-tools

安装方法同one_gadget

sudo apt install gcc ruby-dev
gem install seccomp-tools

暂时无法在飞书文档外展示此内容

sudo gem install -l os-1.1.4.gem 
sudo gem install -l seccomp-tools-1.6.0.gem

15:libc-database

https://libc.blukat.me/ 可以使用这个网站

16:交叉编译环境

先贴个博客:https://hollk.blog.csdn.net/article/details/118188924?spm=1001.2014.3001.5502

视频讲解:https://www.bilibili.com/video/BV1Dk4y1V7gV/?spm_id_from=333.337.search-card.all.click

ARM PWN

sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install gcc-aarch64-linux-gnu

MIPS PWN

sudo apt-get install gcc-mips-linux-gnu
sudo apt-get install gcc-mipsel-linux-gnu
sudo apt-get install gcc-mips64-linux-gnuabi64
sudo apt-get install gcc-mips64el-linux-gnuabi64

一些小癖好

搜狗输入法自行下载

1 简洁 先进的代码编辑器--sublime

ubuntu应用商店里面下载

下载完以后

Ctrl + shift + p 出现搜索框 输入 Package Control: Install Package

img

搜索框里面输入 chinese,选择下拉框中的ChineseLocalizations

如此便设置好了中文

sublime实用插件:

https://blog.csdn.net/rainredhezhang/article/details/126521835?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-126521835-blog-128751355.235^v38^pc_relevant_anti_vip_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-126521835-blog-128751355.235^v38^pc_relevant_anti_vip_base&utm_relevant_index=2

2 终端配置 && terminator

终端,菜单键,配置文件首选项(P),在配置文件里面DIY自己的终端系统

装了个 terminator 先试用段时间,过段时间贴反馈

sudo apt install terminator

参考博客:https://blog.csdn.net/wanttifa/article/details/127536695?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-127536695-blog-128696476.235^v38^pc_relevant_anti_vip_base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~Rate-1-127536695-blog-128696476.235^v38^pc_relevant_anti_vip_base&utm_relevant_index=2

在陈师傅和王师傅推荐下选择了 https://wallhaven.cc/ 里面找壁纸

img

以上是我的terminator 透明背景拉到0.70 其它的不用修改

非活动终端字体亮度建议调高(尤其是配置了pwndbg小技巧后)

效果展示:

img