首页 > 其他分享 >PWN环境搭建

PWN环境搭建

时间:2023-09-20 21:45:06浏览次数:33  
标签:hacker git root sudo 环境 install PWN tools 搭建

PWN环境搭建

1、前置条件

  • 已经安好了基本的Ubuntu20.04的64位系统,我给的硬盘为35G,镜像源为阿里源。
  • vim,git,gcc, net-tools, ssh-server等基本工具
  • gcc没安装的,直接sudo apt install gcc.

1.1 pip换源

root@hacker:/# cd $HOME
root@hacker:~# ls
snap
root@hacker:~# mkdir -p .config/pip
root@hacker:~# ls
snap
root@hacker:~# cd .config/pip/
root@hacker:~/.config/pip# vim pip.conf
root@hacker:~/.config/pip# cd ..
root@hacker:~/.config# cd ..
root@hacker:~# 

pip.conf里面写入以下内容:

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

2、python3-pip

主流是python3,安装就完事了

sudo apt install python3-pip

3、python-is-python3

sudo apt install python3-pip

作用:设置Python命令默认为Python3

4、qemu

sudo apt-get install qemu-user qemu-system

作用:为后面模拟一些别的环境的题目做环境部署

5、gdb-multiarch

作用:用作gdb客户端进行调试,通用客户端

sudo apt-get install gdb-multiarch

6、PWN工具

首先建议在主目录下创建一个tools目录,这样我们git下来的工具就有统一存放的位置,也方便后续查找和配置:

我自己是在根目录底下创建了一个tools目录。

root@hacker:/# cd /
root@hacker:/# mkdir tools
root@hacker:/# cd tools
root@hacker:/tools# 

6.1 pwntools

先附上pwntools的简介:

Pwntools是一个CTF框架和开发...........简单点来说就是打PWN的工具,用Python开发的工具。

pwntools有两种安装方法,一种是git项目后安装,还有一种是pip直接安装。这里我们把Pwntools git下来,用pip安装。

命令如下:

root@hacker:/tools# git clone https://github.com/Gallopsled/pwntools
root@hacker:/tools# sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential
root@hacker:/tools# python3 -m pip install --upgrade pip
root@hacker:/tools# python3 -m pip install --upgrade pwntools(网不好的换源)

这里呢,git的地址也可以用gitclone上面的pwntools克隆源地址:

PS:针对网络不是稳定的师傅,可以用这个源地址,更快一些。

测试pwntools:

使用上述命令,如果能回显成功,则证明安装成功。

6.2 GDB插件(pwndbg、peda、gef、pwngdb)

先把三个git下来,git不下来的,去gitclone上面搜索相应的克隆地址:

root@hacker:/tools#git clone https://github.com/longld/peda.git
root@hacker:/tools#git clone https://github.com/pwndbg/pwndbg.git
root@hacker:/tools#git clone https://github.com/hugsy/gef.git
root@hacker:/tools#git clone https://github.com/scwuaptx/Pwngdb.git

gitclone上面的相应地址如下:

root@hacker:/tools#git clone https://gitclone.com/github.com/longld/peda
root@hacker:/tools#git clone https://gitclone.com/github.com/pwndbg/pwndbg
root@hacker:/tools#git clone https://gitclone.com/github.com/hugsy/gef
root@hacker:/tools#git clone https://gitclone.com/github.com/scwuaptx/Pwngdb

git后的目录情况:

pwndbg安装:

命令如下:

root@hacker:/tools# ls
gef  peda  pwndbg  Pwngdb  pwntools
root@hacker:/tools# cd pwndbg
root@hacker:/tools/pwndbg# ./setup.sh 

安装插件依赖:

root@hacker:/tools/pwndbg#sudo pip install keystone-engine ropper keystone-engine

在家目录地下,使用vim创建一个.gdbinit配置文件,内容配置如下:

root@hacker:/tools/pwndbg# vim ~/.gdbinit
#pwngdb
source /tools/pwndbg/gdbinit.py

#peda 
#source /tools/peda/peda.py 

#gef
#source /tools/gef/gef.py

#Pwngdb
source /tools/Pwngdb/pwngdb.py 
#Pwngdb
source /tools/Pwngdb/angelheap/gdbinit.py 
set disassembly-flavor intel
#set show-tips off
set confirm off

#Pwngdb
define hook-run
python  
import angelheap 
angelheap.init_angelheap() 
end 
end 

选择pwngdb插件,则把另外两个gef和peda注释掉,然后保存退出,其他插件同理.

注意:要把source /tools/pwndbg/gdbinit.py的配置放在前面,否则会报错:

pwndbg:

正常回显,可以使用

peda:

gef:

Pwngdb:

6.3 ROPgadget

查ROP链的工具

安装命令:

root@hacker:/tools# sudo pip3 install capstone
root@hacker:/tools#git clone https://github.com/JonathanSalwan/ROPgadget.git

gitclone命令如下:

root@hacker:/tools#git clone https://gitclone.com/github.com/JonathanSalwan/ROPgadget
root@hacker:/tools#cd ROPgadget
root@hacker:/tools/ROPgadget# sudo python3 setup.py install

如果出现如上报错,则输入:

hollk@ubuntu:~/tools/ROPgadget-master$ sudo cp -r scripts /home/hollk/.local/lib/python3.8/site-packages/ROPGadget-6.5.dist-info
## 后路径为图片中红框内报错路径

检验安装是否成功:

使用:

查找可存储寄存器的代码
ROPgadget --binary  [pro]  --only 'pop|ret' | grep 'eax'
ROPgadget --binary  [pro]  | grep 'rdi'
查找字符串
ROPgadget --binary rop --string "/bin/sh"
查找有int 0x80的地址
ROPgadget --binary rop  --only 'int'

6.4 One_gadget

one_gadget是自动查找ELF文件中的execve的,通过exp实现RCE

安装命令:

root@hacker:/tools# sudo apt-get install ruby
root@hacker:/tools# sudo gem install one_gadget

使用:

one_gadget libc.xxx.so

检测是否安装成功:

6.5 seccomp-tools

针对于CTF的沙盒题,即多种限制的题目

安装命令:

root@hacker:/tools# sudo gem install seccomp-tools

如果失败:

root@hacker:/tools# sudo apt install gcc ruby-dev
root@hacker:/tools# sudo gem install seccomp-tools

检测是否安装成功:

6.6 LibcSearcher

寻找Libc版本的工具

安装命令:

root@hacker:/tools#git clone https://github.com.cnpmjs.org/lieanu/LibcSearcher.git
root@hacker:/tools#cd LibcSearcher
root@hacker:/tools#sudo python3 setup.py install

gitclone:

root@hacker:/tools# git clone https://gitclone.com/github.com/lieanu/LibcSearcher

检测是否安装成功:

可能遇到的问题:

LibcSearcher是基于libc-database做的脚本,由于下载的LibcSearcher可能由于某些原因Libc库并不完全,如果出现

Multi Results:
0: ...
1: ...
Please supply more info using  add_condition(leaked_func, leaked_address).
You can choose it by hand
Or type 'exit' to quit:

但是无论选哪个都有问题时要么是payload不对(例如栈未对齐)要么就是Libc库的问题。

解决方法:
  1. 进入LibcSearcher/libc-database中运行./get文件即可进行更新。
  2. 1提到的./get无法更新时,可以到github下载lib-database源代码,git太慢可以直接浏览器下载后解压到LibcSearcher中并重命名。
cd LibcSearcher
rm -rf libc-database
git clone https://github.com/niklasb/libc-database.git

然后用./get进行Libc库更新

加速下载,由于./get使用wget,单线程的速度,加上某些原因,下载速度十分之慢,可以将下载工具换成多线程工具。

以mwget为例,先安装mwget,mwget是c语言开发的多线程下载工具

安装:

wget http://jaist.dl.sourceforge.net/project/kmphpfm/mwget/0.1/mwget_0.1.0.orig.tar.bz2
tar -xjvf mwget_0.1.0.orig.tar.bz2
cd mwget_0.1.0.orig
./configure
#报错intltool
#apt install inttool
#报错openssl
#apt install libssl-dev
#报错语法错误strlen之类的
#在mwget_0.1.0.orig/src/utils.h中添加#include<string.h>
make & make install

替换:修改LibcSearcher/libc-database/common/libc.sh中下载文件部分(get_ubuntu函数)为以下内容:

get_ubuntu() {
  local url="$1"
  local info="$2"
  mkdir temp
  #$tmp的方式mwget会出问题,直接改成temp更方便
  echo "Getting $info"
  echo "  -> Location: $url"
  local id=`echo $url | perl -n -e '/(libc6[^\/]*)\./ && print $1'`
  echo "  -> ID: $id"
  check_id $id || return
  echo "  -> Downloading package"
  mwget -n 50 -t 5 "$url" 2>/dev/null -d temp/ -f pkg.deb || die "Failed to download package from $url"
  #设置mwget50线程下载
  echo "  -> Extracting package"
  pushd temp 1>/dev/null
  ar x pkg.deb || die "ar failed"
  tar xf data.tar.* || die "tar failed"
  popd 1>/dev/null
  suffix=
  cnt=1
  for libc in $(find temp/ -name libc.so.6 || die "Cannot locate libc.so.6"); do
    process_libc $libc $id$suffix $info $url
    cnt=$((cnt+1))
    suffix=_$cnt
  done
  rm -rf temp/
}

其中mwget行可以换成自己的多线程工具,保证下载文件为temp/pkg.deb即可.

6.7 patchelf

更改题目中的Libc

安装命令:

root@hacker:/tools# sudo apt install patchelf

检测是否安装成功:

6.8 vmlinux-to-elf

用于将bzimage解压为vmlinux的工具,在kernel pwn中常用

root@hacker:/tools#git clone https://github.com/marin-m/vmlinux-to-elf
root@hacker:/tools#cd vmlinux-to-elf
root@hacker:/tools/vmlinux-to-elf#sudo python3 ./setup.py install

检测是否安装成功:

7、ARM PWN

安装命令:

root@hacker:/tools# sudo apt-get install gcc-arm-linux-gnueabi
root@hacker:/tools# sudo apt-get install gcc-aarch64-linux-gnu

8、MIPS PWN

安装命令:

root@hacker:/tools# sudo apt-get install gcc-mips-linux-gnu
root@hacker:/tools# sudo apt-get install gcc-mipsel-linux-gnu
root@hacker:/tools# sudo apt-get install gcc-mips64-linux-gnuabi64
root@hacker:/tools# sudo apt-get install gcc-mips64el-linux-gnuabi64

参考文章:

标签:hacker,git,root,sudo,环境,install,PWN,tools,搭建
From: https://www.cnblogs.com/qsons/p/17718510.html

相关文章

  • Python(Web时代)- 超简单:一行代码就能搭建网站
    From: https://mp.weixin.qq.com/s/x2dJshrAdev4FweK4kwCyA-----------------------------------------------------------------------------------介绍Streamlit是一款非常强大,可以实现快速创建和共享数据应用的Python库。借助他,我们可以在数分钟内构建出功能齐全的Web应用......
  • centos7 环境下yum安装openldap
    1.安装相关openldap的软件yum-yinstallopenldapopenldap-serversopenldap-clientsopenldap-develcompat-openldap2.openldap相关的文件配置/etc/openldap/slapd.conf:OpenLDAP的主配置文件,记录根域信息,管理员名称,密码,日志,权限等/etc/openldap/slapd.d/:这下面是/etc/o......
  • Linux环境下sentence-transformers 之 all-MiniLM-L6-v2模型安装与使用
    好记性不如烂笔头系列一、背景:1、之前使用chatgpt接口生成embeddings的向量维度为1536维,数据库中占用较大,所以找寻低维度的向量生成方法,减少数据占用2、在huggingface上发现all-mpnet-base-v2及all-MiniLM-L6-v2两个模型不错,前者会生成768维的向量,后者会生成384维的向量 二......
  • 求生之路2服务器搭建插件安装及详细的游戏参数配置教程windows
    求生之路2服务器搭建插件安装及详细的游戏参数配置教程windows大家好我是艾西,最近研究了下l4d2(求生之路2)这款游戏的搭建以及架设过程。今天就给喜欢l4d2这款游戏的小伙伴们分享下怎么搭建架设一个自己的服务器。毕竟自己当服主是热爱游戏每一个人的梦想,在自己的服务器里为所欲为在......
  • mysql数据库服务双主搭建
    mysql数据库服务双主搭建1、搭建两台数据库服务环境,master,slave数据库搭建参考:https://www.cnblogs.com/zuouncle/p/17713806.html2、查看服务运行状态systemctlstatusmysqld 3、主库1(master)配置配置mysql的启动配置文件vim/etc/my.cnf#开启binlog日志log......
  • SpringCloud搭建保姆级教程
    一、搭建服务注册与发现中⼼使⽤SpringCloudNetflix中的Eureka搭建服务注册与发现中⼼1、创建SpringBoot应用添加依赖1、springweb2、eurekaserver2、配置服务注册与发现中⼼##设置服务注册与发现中⼼的端⼝server:port:8761##在微服务架构中,服务注册中......
  • Soul CEO张璐团队与用户共建平台安全生态,净化线上社交环境
    网络空间是虚拟的,但是运用网络空间的主体是现实的,营造绿色网络环境,维护网络安全生态,是每个企业必须要践行的社会责任。作为深受年轻人喜爱的线上社交平台,SoulAPP积极履行企业社会责任,SoulCEO张璐及团队一直在努力为用户构筑安全、健康的社交环境,打造真实、多元化的线上社......
  • redis cluster三主六从 redis三主三从集群搭建
    转自:https://blog.51cto.com/u_16099166/6885197一、下载安装二、本文架构(三台服务器,每台部署两个节点,主从同步,生产最好是部署六台服务器): 三、进入redis安装目录,复制redis.conf文件,建立从节点配置文件1#进入redis安装目录2cdredis34#复制redis.conf文件5cpredis.......
  • mysql数据库服务主从搭建
    mysql数据库服务主从搭建1、搭建两台数据库服务环境,master,slave数据库搭建参考:https://www.cnblogs.com/zuouncle/p/17713806.html2、查看服务运行状态systemctlstatusmysqld 如果显示以下内容就关闭mysql服务重新启动 3、主库(master)配置配置mysql的启动配置......
  • 在 Net7.0环境下通过反射创建对象和调用方法
    一、介绍最近没事干,就用闲暇时间写点东西,也记录一下温习历程。老人说的好,好记性,不如烂笔头。时间一长,当时记忆的再清楚,都会变得模糊,索性就写博客记录下来,如果下次需要,直接打开博客就找到了,不用去网上乱找了。今天我要写一些有关反射创建类型实例和调用方法的文章,......