PWN环境配置

news/2024/11/14 2:28:29/

虚拟机安装

  • 镜像下载网站(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=(gitzsh-autosuggestionszsh-syntax-highlightingextract)

 

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),这个就是启动脚本,

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

 


http://www.ppmy.cn/news/1468901.html

相关文章

基于springboot实现民族婚纱预定系统项目【项目源码+论文说明】

基于springboot实现民族婚纱预定系统的设计演示 摘要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本民族婚纱预定系统就是在这样的大环境下诞生&#xff0c;其可…

专家解读 | NIST网络安全框架(3):层级配置

NIST CSF在核心部分提供了六个类别的关键功能和子功能&#xff0c;并围绕CSF的使用提供了层级&#xff08;Tier&#xff09;和配置&#xff08;Profile&#xff09;两种工具&#xff0c;使不同组织和用户更方便有效地使用CSF&#xff0c;本文将深入探讨CSF层级和配置的主要内容…

JeeSite 快速开发平台 Vue3 前端版介绍

JeeSite 快速开发平台 Vue3 前端版介绍&#xff1a; 它构建于 Vue3、Vite、Ant-Design-Vue、TypeScript 以及 Vue Vben Admin 等最前沿的技术栈之上&#xff0c;能助力初学者迅速上手并顺利融入团队开发进程。涵盖的模块包括组织机构、角色用户、菜单授权、数据权限、系统参数…

『矩阵论笔记』特征分解(eigendecomposition)通俗解释!

特征分解(eigendecomposition)通俗解释! 文章目录 一. 特征分解(eigendecomposition)通俗解释!1. 它是如何工作的2. 试图达到什么目的3. 为什么它有用(将一个方阵分解成这三个组成矩阵有什么好处呢?)二. 参考文献一. 特征分解(eigendecomposition)通俗解释! 大家好,欢迎回…

STM32项目分享:智能家居安防系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板及元器件图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.c…

HTML跳动的爱心

目录 写在前面 HTML简介 程序设计 修改文字 推荐系列 写在后面 写在前面 本期小编给大家分享可以写字的html动态爱心代码&#xff0c;一起来看看叭~ HTML简介 HTML&#xff08;HyperText Markup Language&#xff09;是一种用于创建网页的标记语言。它是互联网的基础&…

【计算机网络】 传输层

一、传输层提供的服务 1.1 传输层的功能 1.1.1 传输层的功能如下&#xff1a; 传输层提供应用进程之间的逻辑通信&#xff08;即端到端的通信&#xff09;。与网络层的区别是&#xff1a;网络层提供的是主机之间的逻辑通信。 1.1.2 复用和分用 传输层要还要对收到的报文进行…

一款优秀的下载和共享工具

一、简介 1、它以舒适和快速的方式下载Internet文件&#xff0c;同时支持断点续传和嗅探视频音频的功能。 它具有站点抓取、批量下载队列和计划任务下载等功能&#xff0c;可以接管所有浏览器的下载任务&#xff0c;包括Edge&#xff0c;Firefox和Chrome等主流浏览器。 对于用…