在wsl中搭建pwn环境

Tue Feb 11 2025 12:13:41 GMT+0800


玩linux的少不了系统重装,每次装系统都要配环境,故记录下环境配置的过程,方便再次查阅,也可以i在

GPG报错的解决方案

最近不管在安装Kali的时候,不管装的是vmware、wsl、live boot,在使用apt update的时候都会出现如下错误:

apt update
#Get:1 http://kali.download/kali kali-last-snapshot InRelease [41.5 kB]
#Err:1 http://kali.download/kali kali-last-snapshot InRelease
#  Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key 827C8569F2518CC677FECA1AED65462EC8D5E4C5, which is needed to verify signature.
#Warning: GPG error: http://kali.download/kali kali-last-snapshot InRelease: Sub-process /usr/bin/sqv returned an error code (1), error message is: Missing key #827C8569F2518CC677FECA1AED65462EC8D5E4C5, which is needed to verify signature.
#Error: The repository 'http://http.kali.org/kali kali-last-snapshot InRelease' is not signed.
#Notice: Updating from such a repository can't be done securely, and is therefore disabled by default.
#Notice: See apt-secure(8) manpage for repository creation and user configuration details.
# 解决方法:
sudo wget https://archive.kali.org/archive-keyring.gpg -O /usr/share/keyrings/kali-archive-keyring.gpg

apt、git clone、pip、gem下载速度慢的解决方案

apt换源

vim /etc/apt/sources.list

http://http.kali.org/kali换成http://mirrors.ustc.edu.cn/kali

然后输入apt updateapt upgrade

git加速

git clone的时候把github.com换成bgithub.xyz(校园网环境测试:换之前<50KB/s,换之后>2.5MB/s)

pip限制解除及换源

临时换源

pip install 包名 -i https://pypi.tuna.tsinghua.edu.cn/simple

永久换源

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

(校园网环境测试:换之前根本连不上,换之后>2.5MB/s)

(有必要也可以把pip换成pip3再执行一次,感觉没什么区别)

gem换源

# 总体来说换源前还勉强能用,可以先跳过
gem sources --remove https://rubygems.org/  
gem sources -a https://gems.ruby-china.com/   
gem sources -l        

动态调试工具——gdb & pwndbg

apt install gdb
apt install python3
apt install python3-venv
git clone https://github.com/pwndbg/pwndbg.git
cd pwndbg
./setup.sh # 执行时最好使用流量,而不是校园网,我在使用校园网安装时报错了

安装完成后一定不要删除、移动pwndbg的setup源码,可以专门找一个文件夹给他放起来。

gadget查找工具——ROPgadget & one_gadget

# ROPgadget
git clone https://github.com/JonathanSalwan/ROPgadget.git
cd ROPgadget
python3 setup.py install
# one_gadget
apt install ruby
gem install one_gadget

安装完成后可以删除git源码

一些可以用apt快速安装的工具

apt install tmux
apt install python3-pwntools
apt install checksec

最后附上WSL快捷使用的查询

版权所有 (c) Microsoft Corporation。保留所有权利。
有关此产品的隐私信息,请访问 https://aka.ms/privacy。

用法: wsl.exe [参数] [选项...][命令行]

运行 Linux 二进制文件的参数:

    如果未提供命令行,wsl.exe 将启动默认 shell。

    --exec, -e <CommandLine> 在不使用默认 Linux shell 的情况下执行指定的命令。
    --shell-type <standard|login|none> 使用提供的 shell 类型执行指定的命令。
    --  按原样传递剩余的命令行。
选项:
    --cd <Directory>
        将指定目录设置为当前工作目录。
        如果使用 ~,则将使用 Linux 用户的主路径。如果路径以
        / 字符开始,它将解释为绝对 Linux 路径。
        否则,该值必须是绝对 Windows 路径。
    --distribution, -d <Distro> 运行指定的分发版。
    --user, -u <UserName> 以指定用户身份运行。
    --system 为系统分发版启动 shell。

用于管理适用于 Linux 的 Windows 子系统的参数:

    --help 显示使用情况信息。
    --debug-shell 出于诊断目的打开 WSL2 调试 shell。
    --install [发行版] [选项...]
        安装适用于 Linux 的 Windows 子系统分发版。
        有关有效分发版的列表,请使用 'wsl.exe --list --online'。
        选项:
            --no-launch, -n 安装后不要启动分发版。
            --web-download 从 Internet 而不是 Microsoft Store 下载分发版。
            --no-distribution 仅安装所需的可选组件,不安装分发版。
            --enable-wsl1 启用 WSL1 支持。
    --manage <Distro> <Options...> 更改发行版特定选项。
        选项:
            --move <Location> 将分发移到新位置。
            --set-sparse, -s <true|false> 将发行版的 vhdx 设置为稀疏,从而允许自动回收磁盘空间。
    --mount <Disk> 在所有 WSL 2 分发版中附加和装载物理磁盘或虚拟磁盘。
        选项:
            --vhd 指定 <Disk> 引用虚拟硬盘。
            --bare 将磁盘附加到 WSL2,但不要装载它。
            --name <Name> 使用装入点的自定义名称装载磁盘。
            --type <Type> 装载磁盘时要使用的文件系统(如果未指定)默认为 ext4。
            --options <Options>  其他装载选项。
            --partition <Index> 要装载的分区的索引(如果未指定)默认为整个磁盘。
    --set-default-version <Version> 更改新分发版的默认安装版本。 
    --shutdown 立即终止所有正在运行的分发版和 WSL 2轻型实用工具虚拟机。
    --status 显示适用于 Linux 的 Windows 子系统状态。
    --unmount [磁盘] 从所有 WSL2 分发版中卸载和分离磁盘。
        如果在没有参数的情况下调用,则卸载和分离所有磁盘。
    --uninstall 从此计算机卸载适用于 Linux 的 Windows 子系统包。
    --update 更新适用于 Linux 的 Windows 子系统包。
        选项:
            --pre-release
                下载预发行版本(如果可用)。
    --version, -v 显示版本信息。

用于在适用于 Linux 的 Windows 子系统中管理分发版的参数:

    --export <Distro> <FileName> [选项]
        将分发版导出到 tar 文件。
        文件名可以是 - for stdout。
        选项:
            --vhd
                指定应将分发版导出为 .vhdx 文件。
    --import <Distro> <InstallLocation> <FileName> [选项]
        将指定的 tar 文件作为新分发版导入。
        文件名可以是 - for stdin。
        选项:
            --version <Version>
                指定要用于新分发的版本。
            --vhd
                指定所提供的文件是 .vhdx 文件,而不是 tar 文件。
                此操作在指定的安装位置创建 .vhdx 文件的副本。
    --import-in-place <Distro> <FileName>
        将指定的 .vhdx 文件作为新分发版导入。
        必须使用 ext4 文件系统类型设置此虚拟硬盘的格式。
    --list, -l [选项] 列出分发版。
        选项:
            --all 列出所有分发版,包括当前正在安装或卸载的分发版。
            --running 仅列出当前正在运行的分发版。
            --quiet, -q 仅显示分发版名称。
            --verbose, -v 显示有关所有分发版的详细信息。
            --online, -o 显示适合通过 'wsl --install' 安装的可用分发版列表。
    --set-default, -s <Distro> 将分布版设置为默认值。
    --set-version <Distro> <Version>  更改指定分发版的版本。
    --terminate, -t <Distro> 终止指定的分发版。
    --unregister <Distro> 取消注册分发版并删除根文件系统。

命令很多,有用的就那几个:

wsl --list -v # 查看已安装的虚拟机的详细信息
wsl --unregister <Distro> # 彻底删除一个wsl虚拟机
wsl --export <Distro> <FileName.vhdx> --vhd #导出一个wsl虚拟机 (一般vhd比tar大)
wsl --import <Distro> <InstallLocation> <Filename.vhdx> --vhd #导入一个wsl虚拟机
wsl --set-default <Distro> # 设置默认启动的wsl虚拟机