Sublime Text(文本编辑工具,推荐下载)
剪贴板共享(如果是经典的就不需要)
1 | sudo apt update |
1 | sudo apt-get install zsh#终端美化 |
代理配置

主机cmd输入 ipconfig 找到WLAN适配器的IPv4地址 并复制

小猫clash for windows

打开 allow-lan 允许局域网
clash配置用tun模式和系统代理都可以
保持随机混合端口为关闭状态(7890左边那个)
同时记住端口号,我这里是7890
虚拟机配置:打开系统设置 找到网络->proxy->manual

之后保存就可以了
工具下载
基础
vim
文本编辑工具
1 | sudo apt install vim |
其它
创建文件
1 | vim install.sh |
执行脚本
1 | #!/bin/bash |
之后按:wq保存退出
1 | chmod +x install.sh#赋执行权限 |
常用工具解释
git
用于在github上拽工具
校验
gcc 编译器
自己写一些demo然后编译为elf文件去调试

python3-pip
安装 Python 的包管理工具 pip,从python官方库中下载工具

python-is-python3
把python默认python3

qemu
它能让你在自己的电脑上“假装”成另一种 CPU(比如 ARM、MIPS、RISC-V)去运行程序。
在 CTF / PWN 题目中,很多程序不是 x86_64 的,而是:
- ARM (arm / aarch64)
- MIPS (mips / mipsel)
- RISC-V (riscv64)
这些架构你在 x86 电脑上是直接运行不了的,这时候就需要 qemu。
| 用途 | 示例命令 | 说明 |
|---|---|---|
| 运行 ARM 程序 | qemu-arm -L /usr/arm-linux-gnueabihf ./vuln |
模拟 ARM CPU,运行 32 位 ARM 程序 |
| 运行 MIPS 程序 | qemu-mips -L /usr/mips-linux-gnu ./vuln |
模拟 MIPS CPU |
| 运行 aarch64 程序 | qemu-aarch64 -L /usr/aarch64-linux-gnu ./vuln |
模拟 64 位 ARM |
| 运行 riscv 程序 | qemu-riscv64 -L /usr/riscv64-linux-gnu ./vuln |
模拟 RISC-V |
| 启动完整系统镜像 | qemu-system-x86_64 image.img |
启动一个虚拟机(类似 VirtualBox) |

gdb-multiarch
你在 x86_64 主机上要调试 ARM/MIPS/RISCV 二进制时,直接使用 gdb-multiarch 就可:它能识别并切换架构,支持 remote target。
与 qemu(qemu-user / qemu-system)的 gdb remote 调试配合使用非常方便(常见场景:qemu-arm -g <port> ./vuln + gdb-multiarch ./vuln -> target remote :<port>)。
在 CTF 中处理异构题目(嵌入式、IoT)几乎必备。

pwn
建议要下载的工具文件都放在一个文件夹下,方便管理
1 | cd ~ |
pwntools
pwntools 是面向 CTF / pwn 开发的 Python 库,封装了很多常用操作,例如:
- 启动/连接进程:
process(),remote() - 构造/发送 payload:
send,sendline,recv等 - ELF/ROP/动态分析支持:
ELF,ROP,context - 与 gdb 协作:
gdb.attach() - 常用工具:自动处理大小端、pack/unpack、格式化输出等
一句话:写 exploit 的标准库,几乎每个 pwn 解题脚本都会用到
这个下载时间会比较久
1 | sudo python2 -m pip install --upgrade pwntools |
用 Python 2/3 的 pip,把 pwntools 安装或升级到系统 Python2/3 的 site-packages(因为有 sudo,是全局安装)。
校验

pwndbg
pwndbg 是一个为 GDB 写的插件 / 扩展,目标是把 GDB 变成一个更适合漏洞利用(pwn)和二进制逆向的交互式调试器。它的主要作用和优点:
- 自动美化
context:运行时自动显示寄存器、栈、反汇编、堆/映射等信息(比原生 GDB 更清晰)。 - 常用快捷命令:一堆对 pwn 常见任务的快捷命令(比如
vmmap,heap,telescope,search,rop等)。 - 内存/格式化工具:漂亮的十六进制 / ASCII 十六进制查看(hexdump)、结构化显示 C 字符串/数组/链表等。
- 帮助做 ROP / 查找 gadgets:快速定位 gadgets、打印调用链。
- 改善交互体验:颜色、高亮、上下文滚动、对 fork/attach 的更友好支持。
- 与 pwntools / exploit 流程配合良好:在写利用脚本和交互调试时非常方便。
简而言之:把 GDB 变成“面向 pwn 的可视化调试器”,大幅减少查状态/跑例程的重复工作。
方法1:(在代理配置过后,从github仓库上拉取文件时间可能久一点)
1 | git clone https://github.com/pwndbg/pwndbg |
这个方法操作简单,但是等待时间长
方法2:

把下好的deb文件拖入tools中(建议建一个共享文件夹把文件传入虚拟机中)

1 >ln -s /mnt/hgfs/myDesktop ~/Desktop/共享桌面这是一个把共享文件夹创建快捷方式的例子
1 | sudo su root |
ropper
ropper 是一个用于查找并利用 ELF/PE 二进制里面的 ROP gadgets(以及其它有用片段)的工具 —— 它能帮你快速定位 pop rdi; ret、syscall、mov [rsi], rax; ret 之类的小指令序列、导出符号、section、以及方便用于构造 ROP 链的信息。它是 pwn/逆向/漏洞复现里常用的自动化助手之一。
1 | sudo pip3 install capstone filebytes unicorn keystone-engine ropper |
qemu-system
qemu-system 系列程序是 完整的机器模拟器/虚拟机管理器,用来在宿主机上模拟(或虚拟化)整台计算机(CPU、内存、I/O、网卡、磁盘、显卡、BIOS/固件 等)。它可以运行完整的操作系统镜像、做固件/内核调试、做跨架构仿真(比如在 x86 机上跑 ARM),也能做快速、可控的漏洞复现环境。
1 | sudo apt-get install qemu-system |
Ropgadget
和ropper相似,都是查找
1 | sudo -H python3 -m pip install ROPgadget |

one_gadget
one_gadget 是一个专门用于在 glibc(libc)中查找能够直接执行 execve("/bin/sh", NULL, NULL) 的代码片段(即 “gadget”)的工具。这些 gadget 可以让你在控制程序执行流后,无需构造复杂的 ROP 链,直接获取 shell。
1 | sudo gem install one_gadget |
seccomp-tools
查看 沙盒机制的限制
1 | sudo gem install seccomp-tools |
e:
1 | $ seccomp-tools dump ./pwn |
LibcSearcher
校验查找libc
1 | cd ~/ |
free_libc(强烈推荐)
patchelf 是“改装工具” —— 它可以直接修改一个 ELF 可执行文件内部的元信息(比如告诉它“运行时请用这个 ld(解释器)”或“优先在这个目录找库”),从而让程序长期使用你指定的 glibc。
glibc-all-in-one 是“工具包” —— 它提供了很多不同版本的 libc.so 和对应的 ld-*.so(动态链接器/loader)。把这些放在某个目录里,就相当于有许多不同版本的“运行时环境”可用。
典型场景 / 为什么要配合使用
CTF / pwn 场景常见需求是:目标服务运行的是特定版本的 glibc(例如 2.31),而你本地默认系统是不同版本。要在本地复现 exploit,需要:
- 拿到那个版本的
libc.so.6和对应的ld-linux-x86-64.so.2(这就是glibc-all-in-one提供的内容),- 让目标二进制在本地加载这些库(不是系统 libc)。这可以用
patchelf改 ELF 的 interpreter 与 rpath 来实现,或用LD_LIBRARY_PATH/LD_PRELOAD临时覆盖。优势对比(实用角度)
glibc-all-in-one:- 优点:提供真实、完整、不同版本的 glibc 运行时,保证行为和远端一致。
- 不修改目标二进制,只提供库文件。
patchelf:- 优点:能把二进制永久或临时修改为“使用指定 loader 和库目录”,方便一次性复现;也能在不改系统设置的情况下把二进制指向本地目录的 libc。
- 风险:修改二进制,操作前应备份;错误的 interpreter/lib 配置会导致二进制无法执行。
Sublime Text
配置F5快捷键
- 点击菜单栏
Preferences→Key Bindings。 - 在右侧的用户配置文件(
Default (Linux).sublime-keymap - User)中,添加如下内容:
1 | [ |

- 保存文件(Ctrl+S)。
- 重启 Sublime Text。
在终端交互
- 在 Sublime Text 中,点击菜单栏的
Tools->Build System->New Build System...。 - 这会打开一个新的配置文件。删除里面的所有内容,然后粘贴以下代码:
1 | { |
保存这个文件。Sublime Text 会自动打开保存目录,将文件名修改为 PythonInTerminal.sublime-build,然后保存。
步骤 2: 选择并使用新的构建系统
- 回到你的
wp.py文件窗口。 - 点击菜单栏
Tools->Build System,在列表中找到并勾选你刚刚创建的PythonInTerminal。