pwner入门宝典--从创建虚拟机到配置pwn环境

pwner入门宝典--从创建虚拟机到配置pwn环境

创建虚拟机--wsl ubuntu22.04

一、安装 WSL2

1. 启用 Windows 子系统(WSL)功能

在 PowerShell(管理员模式)中运行:

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Lin

解释:

  • /all:在所有用户上启用该功能
  • /norestart:启用功能后不会立即重启

2. 启用虚拟机平台功能

WSL2 依赖 Windows 虚拟机功能,需要额外启用:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /nores

3.将 WSL 默认版本设置为 WSL2(视情况而定)

wsl --set-default-version 2

Windows 11 默认已安装 WSL2,不需要执行该命令。
Windows 10 用户 需要执行此命令,否则默认使用 WSL1。

4. 重启电脑

以上命令执行完成后,请重启电脑,以确保所有更改生效。

二、WSL2 安装 Ubuntu-22.04 至 D盘

1. 创建文件夹

  • D盘 创建 WSL 文件夹,并在该文件夹下创建 Ubuntu-22.04 文件夹。

2. 下载并导出 Ubuntu-22.04

首先,查看可用的 WSL 发行版:

wsl --list --online

安装 Ubuntu-22.04

wsl --install -d Ubuntu-22.04

安装完毕后会要求你创建一个新用户,按照提示输入用户名和密码即可,然后按 Ctrl + D 退出即可。

导出 Ubuntu-22.04.tar 文件

wsl --export Ubuntu-22.04 D:\WSL\Ubuntu-22.04\Ubuntu-22.04.tar

取消注册原有的 Ubuntu-22.04,如果你已经安装了 Ubuntu-22.04(默认在 C 盘),可以将其从 WSL 注销:

wsl --unregister Ubuntu-22.04

导入 Ubuntu-22.04 到 D 盘
运行以下命令,将 Ubuntu-22.04 重新导入到 D:\WSL\Ubuntu-22.04:

wsl --import Ubuntu-22.04 D:\WSL\Ubuntu-22.04 D:\WSL\Ubuntu-22.04\Ubuntu-20

D:\WSL\Ubuntu-22.04 目录下,WSL2 发行版的文件存储在一个 虚拟磁盘映像文件(ext4.vhdx) 中,该文件用于存储整个 Ubuntu-22.04 文件系统

imag

e-20260125230144845

导入完成后,你可以启动 WSL:

wsl -d Ubuntu-22.04

但此时,你会发现默认以 root 用户登录,因为 WSL 手动导入的 Ubuntu 不会自动创建普通用户,需要我们手动创建。

修改默认登录用户为普通用户,以管理员身份运行PowerShell,执行命令:

ubuntu2204 config --default-user <yourusername>

再次启动 WSL:

wsl -d Ubuntu-22.04

此时,你会发现默认以普通用户登录

三、wsl与vscode联合使用

个人小习惯,便于分屏码代码

wsl 输入

code .

vscode

image-20260125234757901

安装完成,重启vscode

image-20260125235209174

等待一会就连接上了

安装必要环境

将以下内容写入一个sh脚本文件中,为chmod 777 xxx.sh文件赋权限后直接./xxx.sh运行脚本,中途会出现Do you want to continue? [Y/n]输入y

#!/bin/bash
cd ~
sudo apt install tzdata
sudo apt install vim
sudo apt install libxml2-dev
sudo apt install libxslt-dev
sudo apt install libmysqlclient-dev
sudo apt install libsqlite3-dev
sudo apt install zlib1g-dev
sudo apt install python2-dev
sudo apt install python3-pip
sudo apt install libffi-dev
sudo apt install libssl-dev
sudo apt install wget
sudo apt install curl
sudo apt install gcc
sudo apt install clang
sudo apt install make
sudo apt install zip
sudo apt install build-essential
sudo apt install libncursesw5-dev libgdbm-dev libc6-dev
sudo apt install tk-dev
sudo apt install openssl
sudo apt install virtualenv
sudo apt install git
sudo apt install proxychains4
sudo apt install ruby-dev

#setuptools 36.6.1 -> python2
wget https://mirrors.aliyun.com/pypi/packages/56/a0/4dfcc515b1b993286a64b9ab62562f09e6ed2d09288909aee1efdb9dde16/setuptools-36.6.1.zip
unzip setuptools-36.6.1.zip
cd setuptools-36.6.1
sudo python2 setup.py install
cd ../
sudo rm -rf setuptools-36.6.1 setuptools-36.6.1.zip

#setuptools 65.4.1 -> python3
wget https://mirrors.aliyun.com/pypi/packages/03/c9/7b050ea4cc4144d0328f15e0b43c839e759c6c639370a3b932ecf4c6358f/setuptools-65.4.1.tar.gz
tar -zxvf setuptools-65.4.1.tar.gz
cd setuptools-65.4.1
sudo python3 setup.py install
cd ../
sudo rm -rf setuptools-65.4.1 setuptools-65.4.1.tar.gz

#pip
wget https://mirrors.aliyun.com/pypi/packages/53/7f/55721ad0501a9076dbc354cc8c63ffc2d6f1ef360f49ad0fbcce19d68538/pip-20.3.4.tar.gz
tar -zxvf pip-20.3.4.tar.gz
cd pip-20.3.4
sudo python2 setup.py install
sudo python3 setup.py install
cd ../
sudo rm -rf pip-20.3.4 pip-20.3.4.tar.gz

sudo pip2 config set global.index-url https://mirrors.aliyun.com/pypi/simple
sudo pip3 config set global.index-url https://mirrors.aliyun.com/pypi/simple

sudo python2 -m pip install --upgrade pip
sudo python3 -m pip install --upgrade pip

pip3 install --upgrade pip
sudo pip2 install pathlib2

配置pwn环境及基础工具安装

pwntools

sudo python3 -m pip install --upgrade pwntools

pwndbg+tmux

这里用的是网上找的一个师傅的配置,文章同样放下面了。

同样将以下内容写入一个sh脚本文件中

#!/bin/bash

# define colors
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'

ESSENTIAL_PACKAGES="build-essential tmux git vim curl wget zsh gdb gdb-multiarch python3 python3-pip python3-dev net-tools openssh-server"

print_message() {
    local indent=$1
    local type=$2
    local message=$3
    local spaces=$(printf '%*s' $indent)
    case $type in
        "info")
            echo -e "${spaces}${YELLOW}[*] ${message}${NC}"
            ;;
        "success")
            echo -e "${spaces}${GREEN}[+] ${message}${NC}"
            ;;
        "error")
            echo -e "${spaces}${RED}[!] ${message}${NC}"
            ;;
        *)
            echo -e "${spaces}${message}"
            ;;
    esac
}


# update source list and install essential packages
print_message 0 "info" "Updating source list and installing essential packages"
sudo apt-get update -y
sudo apt-get install -y ${ESSENTIAL_PACKAGES}

CURRENT_DIR=$(pwd)

# install and config oh-my-zsh
install_zsh() {
	print_message 0 "info" "Installing oh-my-zsh"
	echo "Y" | sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
	sed -i 's/^ZSH_THEME="robbyrussell"/ZSH_THEME="ys"/' $HOME/.zshrc
	sed -i '/^PROMPT=/{N;s/\n//}' $HOME/.oh-my-zsh/themes/ys.zsh-theme
	source $HOME/.zshrc
}
# install and config vim 
install_vim() {
	print_message 0 "info" "Installing vim"
	curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
    	https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
	git clone https://github.com/altercation/vim-colors-solarized.git $HOME/.vim/plugged/vim-colors-solarized
	cp $CURRENT_DIR/.vimrc $HOME/.vimrc
	mkdir -p $HOME/.vim/colors
	cp $HOME/.vim/plugged/vim-colors-solarized/colors/solarized.vim $HOME/.vim/colors/
	vim +PlugInstall +qall
	$HOME/.vim/plugged/YouCompleteMe/install.sh
}
# install and config tmux
install_tmux() {
	print_message 0 "info" "Installing tmux"
	git clone https://github.com/gpakosz/.tmux.git $HOME/.tmux
	ln -s -f $HOME/.tmux/.tmux.conf $HOME/.tmux.conf
	cp $HOME/.tmux/.tmux.conf.local $HOME/
	sed -i '/set -g prefix2 C-a/s/^/#/' $HOME/.tmux/.tmux.conf
	sed -i '/bind C-a send-prefix -2/s/^/#/' $HOME/.tmux/.tmux.conf
}
# install and config gdb
install_gdb(){
	print_message 0 "info" "Installing gdb"
	git clone https://github.com/pwndbg/pwndbg.git $HOME/.pwndbg
	cd $HOME/.pwndbg 
    git checkout 2025.05.30#此版本虚拟机不支撑最新版pwndbg,需要指定版本
    ./setup.sh && cd $CURRENT_DIR
	git clone https://github.com/jerdna-regeiz/splitmind.git $HOME/.splitmind
	cp $CURRENT_DIR/.gdbinit $HOME/.gdbinit
}

# install_vim
install_tmux
install_gdb

tmux

个人建议把前缀键换成C-a,更方便

更换方式,打开home目录的.tmux.conf文件,编辑如图

image-20260126000025410

C-a就作为副前缀键,和C-b一块用

再在tmux会话中tmux source .tmux.conf即可完成修改

splitmind

switch-mode s
switch-mode m
switch-mode d#切换模式(在pwndbg里)

patchup

一个一键换libc和ld的小工具,但要先下patchelf和glibc-all-in-one

install patchelf

git clone https://github.com/NixOS/patchelf --depth 1

cd patchelf
# 安装autoreconf
sudo apt install -y autoconf automake libtool
# 赋予执行权限
chmod +x bootstrap.sh
# 使用预设脚本配置编译环境
./bootstrap.sh
# 生成 Makefile 文件
./configure
make
make check
sudo make installgit clone https://github.com/matrix1001/glibc-all-in-one
cd glibc-all-in-one
mkdir libs
chmod +x  extract  update_list download
./update_list

install glibc-all-in-one

git clone https://github.com/matrix1001/glibc-all-in-one
cd glibc-all-in-one
mkdir libs
chmod +x  extract  update_list download
./update_list

install patchup

git clone https://github.com/polishing-labs/patchup.git --depth 1

cd patchup

sudo pip3 install --editable .

最后目录结构应该如下

glibc-all-in-one(目录)
patchelf(目录)
patchup
	├── patchup.py(仓库文件)
	└── setup.py(仓库文件

Ropgadget

sudo -H python3 -m pip install ROPgadget

one_gadget

sudo apt install ruby-full
sudo gem install one_gadget

seccomp-tools

sudo gem install seccomp-tools

qemu-system

sudo apt-get install qemu-system

ropper

sudo pip3 install capstone filebytes unicorn keystone-engine ropper

参考文章

全网最全Win10/11系统下WSL2+Ubuntu22.04的全流程安装指南(两种支持安装至 D 盘方式)_win10安装wsl2-CSDN博客

pwn环境配置 | starrysky

[分享] pwndbg+tmux真乃天作之合-Pwn-看雪安全社区|专业技术交流与安全研究论坛

polishing-labs/patchup: 一个 pwn 手 配置 gilbc 库的小工具

posted @ 2026-01-29 20:57  sprYAaaa  阅读(2)  评论(0)    收藏  举报