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 文件系统

导入完成后,你可以启动 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

安装完成,重启vscode

等待一会就连接上了
安装必要环境
将以下内容写入一个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文件,编辑如图

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博客

浙公网安备 33010602011771号