PWN环境配置

虚拟机安装

  • 镜像下载网站(http://old-releases.ubuntu.com/releases/)
  • 虚拟机建议硬盘 256 G 以上,内存也尽量大一些。硬盘大小只是上界,256 G 不是真就占了 256G,而后期如果硬盘空间不足会很麻烦。
  • lsb_release -a查看版本
  • 更换 ubuntu 镜像源 (https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/),建议先在 系统设置 → Software & Updates → Download from → 选择国内服务器例如阿里云 (貌似不这样后续换源会出错),然后再 sudo vim /etc/apt/sources.list 将镜像源中不高于当前系统版本的镜像复制进去(高于当前系统版本容易把 apt 搞坏)。
  • sudo apt update

基础工具

net-tools

ifconfig 查看网络配置需要安装 net-tools

sudo apt install net-tools

vim

sudo apt install vim

gedit

sudo apt install gedit

git

sudo apt install git

gcc

sudo apt install gcc

sudo apt install gcc-multilib

python

sudo apt install python2

sudo apt install python3

sudo apt install ipython

sudo apt install ipython3

pip

sudo apt install python3-pip

sudo apt install curl

curl https://bootstrap.pypa.io/pip/2.7/get-pip.py --output get-pip.py

sudo python2 get-pip.py

docker

sudo apt install docker.io

sudo apt install docker-compose

oh-my-zsh

#尽量root用户也下载一边

sudo apt install zsh

安装oh-my-zshsh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

设置zsh为默认shell(重启虚拟机后生效)

chsh -s /bin/zsh

安装插件:

git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

编辑~/.zshrc添加插件:

plugins=(git

zsh-autosuggestions

zsh-syntax-highlighting

extract

)

 

gdb

安装: sudo apt-get install gdb gdb-multiarch

gdb 插件

主要有 pwndbg,peda,gef,这里我常用的是pwndbg。对于版本过于古老导致环境装不上的可以试一下peda.

先将三个项目的代码都拉取下来:

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

git clone https://github.com/pwndbg/pwndbg.git

git clone https://github.com/hugsy/gef.git

pwndbg 需要运行初始化脚本:

cd pwndbg

sudo ./setup.sh

另外还有一个 pwngdb 插件在调试多线程堆( heapinfoall 命令)的时候很有用,建议安装。

git clone https://github.com/scwuaptx/Pwngdb.git

gdb 在启动的时候会读取当前用户的主目录的.gdbinit文件进行 gdb 插件的初始化,这里提供一个

配置方案。

source /home/ubuntu/tools/pwndbg/gdbinit.py
#source /home/ubuntu/tools/peda/peda.py
#source /home/ubuntu/tools/gef/gef.py
#source /home/ubuntu/tools/muslheap/muslheap.py
source /home/ubuntu/tools/Pwngdb/pwngdb.py
source /home/ubuntu/tools/Pwngdb/angelheap/gdbinit.py
define hook-run
python
import angelheap
angelheap.init_angelheap()
end
end

注意,以普通用权限和管理员权限启动 gdb 时读取的 .gdbinit 文件的路径是不同的,普通权限读取的

是 /home/<username>/.gdbinit 而管理员权限读取的是 /root/.gdbinit 。

pwndbg 安装 ghidra 插件可以支持代码反编译(虽然没啥用 )

  • 安装 r2pipe 库
    • pip3 install r2pipe
  • 下载安装 radere2 项目
    • git clone https://github.com/radareorg/radare2.git
    • cd radare2
    • sudo sys/install.sh
  • 下载编译安装 r2ghidra 项目
    • git clone https://github.com/radareorg/r2ghidra.git
    • cd r2ghidra
    • sudo ./preconfigure
    • sudo ./configure
    • sudo make -j16
    • sudo make install
gadget 搜索工具
ROPgdbget

安装:

git clone https://github.com/JonathanSalwan/ROPgadget.git

cd ROPgadget

sudo python3 setup.py install

使用:

ROPgadget --binary ntdll.dll > rop

ropper

安装:

  • 在pypi 的 ropper 官网上下载 ropper
  • 运行安装脚本完成 ropper 安装
    • sudo python3 setup.py install

使用:

ropper --file ./pwn --nocolor > rop

one_gadget

用于搜索 libc 中能够实现 execve("/bin/sh", (char *[2]) {"/bin/sh", NULL}, NULL); 的效果

的跳转地址,由于是采用特征匹配的方法,因此只能是在 libc 中查找。

安装:

  • sudo apt install -y ruby ruby-dev
  • sudo gem install one_gadget

使用:可以查找到 gadget 地址以及条件限制。

➜ ~ one_gadget /lib/x86_64-linux-gnu/libc.so.6
0x50a37 posix_spawn(rsp+0x1c, "/bin/sh", 0, rbp, rsp+0x60, environ)
constraints:
rsp & 0xf == 0
rcx == NULL
rbp == NULL || (u16)[rbp] == NULL
0xebcf1 execve("/bin/sh", r10, [rbp-0x70])
constraints:
address rbp-0x78 is writable
[r10] == NULL || r10 == NULL
[[rbp-0x70]] == NULL || [rbp-0x70] == NULL
0xebcf5 execve("/bin/sh", r10, rdx)
constraints:
address rbp-0x78 is writable
[r10] == NULL || r10 == NULL
[rdx] == NULL || rdx == NULL
0xebcf8 execve("/bin/sh", rsi, rdx)
constraints:
address rbp-0x78 is writable
[rsi] == NULL || rsi == NULL
[rdx] == NULL || rdx == NULL

 

seccomp-tools

用于查看和生成程序沙箱规则。

安装: sudo gem install seccomp-tools

使用: seccomp-tools dump ./pwn

LibcSearcher

通过泄露的 libc 中函数的地址来确定 libc 版本

git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
sudo python3 setup.py install
glibc-all-in-one

临时找 glibc 和 ld 或者编译 glibc

git clone https://github.com/matrix1001/glibc-all-in-one.git

更新下载列表:

➜ glibc-all-in-one ./update_list
[+] Common list has been save to "list"
[+] Old-release list has been save to "old_list"
➜ glibc-all-in-one cat list
2.23-0ubuntu10_amd64
2.23-0ubuntu10_i386
2.23-0ubuntu11_amd64
2.23-0ubuntu11_i386
2.23-0ubuntu3_amd64
2.23-0ubuntu3_i386
2.27-3ubuntu1_amd64
2.27-3ubuntu1_i386
2.28-0ubuntu1_amd64
2.28-0ubuntu1_i386
......
➜ glibc-all-in-one cat old_list
2.21-0ubuntu4.3_amd64
2.21-0ubuntu4.3_amd64
2.21-0ubuntu4_amd64
2.21-0ubuntu4_amd64
2.24-3ubuntu1_amd64
2.24-3ubuntu1_amd64
2.24-3ubuntu2.2_amd64
2.24-3ubuntu2.2_amd64
2.24-9ubuntu2.2_amd64
2.24-9ubuntu2.2_amd64
......

下载libc:

cat list |xargs -i ./download {}

cat old_list |xargs -i ./download_old {}

编译libc:

sudo ./build [版本例如2.29] [架构例如 i686 amd64]

patchelf

安装: sudo apt install patchelf

qemu

安装: sudo apt install qemu-user qemu-system

alpha3

安装: git clone https://github.com/TaQini/alpha3.git

from pwn import *
import os
context(arch='amd64', os='linux')
context.log_level = 'debug'
fp = open("shellcode", "wb+")
fp.write(asm(shellcraft.sh()))
fp.close()
shellcode = os.popen("python ./alpha3/ALPHA3.py x64 ascii mixedcase rax --
input=shellcode").read()
print shellcode

WSL

我们可以用wsl和vscode来完成我们的环境搭建.

  1. 首先我们需要在vscode下载wsl插件.
  2. 在wsl里输入code .
    1. 如果这一部报错,看报错信息记住他说要去哪个网址(https://update.code.visualstudio.comcommit:(根据报错填写)/server-linux-x64/stable)下载东西,我们挂上梯子,然后我们手动下载,之后放到~/.vscode-server/bin目录下,记得把其他文件删完.
      1. cd ~/.vscode-server/bin
      2. tar -zxf vscode-server-linux-x64.tar.gz
      3. mv vscode-server-linux-x64 ${id} # 注意把:${id}替换成对应的id
  3. wsl里输入code .就能打开vscode了

LINUX安装应用

比如安装clion,我们下载了他的tar.tz包,解压之后它里面会有一个bin目录

bin里有个clion.sh(pycharm里面是pycharm.sh),这个就是启动脚本,

打开后创建桌面条目就行了

 

  • 14
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值