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环境搭建的补充与完善
(由于是从本地复制来的md记录,就不贴图啦
虚拟机
vmware虚拟机
Vmtools
基础工具
vim
sudo apt-get install vim
git
sudo apt install git
gcc
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容器
直接到软件和更新里面换源(选择合适的源)我选的是华为云
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
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的输出出现在右侧终端窗口中
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,下载下来
然后使用命令:
gem install -l one_gadget-1.8.1.gem //本地离线安装
可是它会报错:缺少elftools依赖包
注意 elftools >= 1.0.2, < 1.2.0
它默认版本是1.2.0 需要自行在gem官网里切换为1.1.3
依照上面的方法再安装装
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
搜索框里面输入 chinese,选择下拉框中的ChineseLocalizations
如此便设置好了中文
sublime实用插件:
2 终端配置 && terminator
终端,菜单键,配置文件首选项(P),在配置文件里面DIY自己的终端系统
安装terminator
sudo apt install terminator
非活动终端字体亮度建议调高(尤其是配置了pwndbg小技巧后)
标签:install,部署,sudo,环境,apt,pip,https,pwn,gem From: https://www.cnblogs.com/37blog/p/17808709.html