首页 > 其他分享 >pwn环境部署

pwn环境部署

时间:2023-11-03 23:25:21浏览次数:45  
标签:install 部署 sudo 环境 apt pip https pwn gem

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

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

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

标签:install,部署,sudo,环境,apt,pip,https,pwn,gem
From: https://www.cnblogs.com/37blog/p/17808709.html

相关文章

  • .net 7 部署到IIS上
    1.首先确定windows下安装iis,如何安装网上查。2.则要安装WindowsServerHosting,如果iis新安装,则直接安装,如果是不确定有没有安装,则IIS点开网站,功能视图->模块,查看有没有“ASPNETCoreModuleV2”,如果没有则必须安装,下载地址:https://dotnet.microsoft.com/zh-cn/download......
  • JDK 环境安装
    JDK环境安装​#JDK#​#安装教程#​​#Java#​官网地址JavaDownloads|OracleWindows安装教程​​下载安装包安装完成后,我们需要配置环境变量,找到系统高级设置​​新建系统变量​​创建系统变量JAVA_HOME将JDK安装目录填入变量值D:\DevTools\Java\jdk1.8.0_3......
  • NFS安装部署
    #安装软件yum-yinstallnfsrpcbind#格式化磁盘fdisk-lmkfs.ext4/dev/vdb#临时挂载mount/dev/vdc/htdocs#查看UUIDblkid#写入/etc/fstab实现开机自动挂载(UUID写自己查看到的)vim/etc/fstabUUID=3165644d-eea3-4b0b-82b1-ce7ed3a2718b/data         ext......
  • 使用Docker部署java项目时遇到的几个错误
    0.简介本文主要是在学习黑马程序员Docker快速入门到项目部署过程中,对遇到的问题进行了相关的总结梳理1.本地已存在mysql服务占用3306端口问题当我使用dockerrun-d--namemysql-p3306:3306-eTZ=Asia/Shanghai-eMYSQL_ROOT_PASSWORD=123mysql准备创建mysql容器时报......
  • CTF-pwn-堆入门-day1
    什么是堆 堆是可以根据运行时的需要进行动态分配和释放的内存,大小可变由程序员决定mallocnew\freedelete栈用于函数分配固定大小的局部内存由程序决定 但是为什么不都在栈上进行函数调用,反而要去对上进行调用 堆的实现重点关注内存块的组织和管理方式,尤其是空闲......
  • prometheus docker部署安装
    prometheusprometheusdocker部署安装之前用docker-compose部署过一套自动注册的prometheus,也用k8s的operator部署过一套,详情见promethues栏的文档。时隔许久,今天在自己虚拟机部署一套promethues玩玩准备工作准备三台虚拟机,规格均为1C2G20G,因为是自己玩,所以对性能啥的不要......
  • haproxy+keepalived部署高可用k8s集群
    四台机器节点名称节点ip节点角色基础配置1、升级机器内核2、将机器ip名称写入到/etc/hosts中3、基础环境准备#关闭防火墙,selinuxsystemctlstopfirewalldsystemctldisablefirewalldsed-i's/enforcing/disabled/'/etc/selinux/configsetenforce0##关闭swaps......
  • RKE2 部署K8S1.28.x 高可用集群
    标签(空格分隔):kubernetes系列一:RKE2的介绍k8s官方部署安装集群的是使用kubeadm方式,但是该方式比较复杂繁琐,所以产生了一些新的部署安装集群方式,比如k3s和rke2等新方式k3s有着非常庞大的社区支持,部署安装也非常简单,设计为轻量级的k8s,可以很好的运行在物联网设备或者边缘计算......
  • Linux环境Prometheus接入(三、MySQL监控接入mysqld_exporter)
    环境CentOS7.9安装1、命令下载wgethttps://github.com/prometheus/mysqld_exporter/releases/download/v0.15.0/mysqld_exporter-0.15.0.linux-amd64.tar.gztar-zxfmysqld_exporter-0.15.0.linux-amd64.tar.gzmvmysqld_exporter-0.15.0.linux-amd64.tar.gz/home/mysq......
  • Linux环境Prometheus接入(四、系统监控接入node_exporter)
    环境CentOS7.9安装1、命令下载wgethttps://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gztar-zxfnode_exporter-1.6.1.linux-amd64.tar.gzmvnode_exporter-1.6.1.linux-amd64/home/node_exporter2、配置系......