bin
zach0ry

Sublime Text(文本编辑工具,推荐下载)

剪贴板共享(如果是经典的就不需要)

1
2
3
sudo apt update
sudo apt install open-vm-tools open-vm-tools-desktop -y
sudo reboot
1
sudo apt-get install zsh#终端美化

代理配置

教程

image-20251030012159681

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

image-20251030012404060

小猫clash for windows

image-20251030012604541

打开 allow-lan 允许局域网
clash配置用tun模式和系统代理都可以

保持随机混合端口为关闭状态(7890左边那个)

同时记住端口号,我这里是7890

虚拟机配置:打开系统设置 找到网络->proxy->manual

image-20251030181827459

之后保存就可以了

工具下载

基础

vim

文本编辑工具

1
sudo apt install vim

其它

创建文件

1
vim install.sh

执行脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/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
sudo apt install -y gdb gdb-multiarch # 调试器
sudo apt install -y qemu qemu-system qemu-user qemu-user-static # 虚拟机/模拟器
sudo apt install -y python-is-python3 # 让 python 命令指向 python3


#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

之后按:wq保存退出

1
2
chmod +x install.sh#赋执行权限
./install.sh#运行

常用工具解释

git

用于在github上拽工具

校验image-20251030015107450

gcc 编译器

自己写一些demo然后编译为elf文件去调试

image-20251030015330855

python3-pip

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

image-20251030015828084

python-is-python3

把python默认python3

image-20251030020201790

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)

image-20251030020749567

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)几乎必备。

image-20251030021218358

pwn

建议要下载的工具文件都放在一个文件夹下,方便管理

1
2
3
cd ~
mkdir tools
cd tools

pwntools

pwntools 是面向 CTF / pwn 开发的 Python 库,封装了很多常用操作,例如:

  • 启动/连接进程:process(), remote()
  • 构造/发送 payload:send, sendline, recv
  • ELF/ROP/动态分析支持:ELF, ROP, context
  • 与 gdb 协作:gdb.attach()
  • 常用工具:自动处理大小端、pack/unpack、格式化输出等

一句话:写 exploit 的标准库,几乎每个 pwn 解题脚本都会用到

这个下载时间会比较久

1
2
sudo python2 -m pip install --upgrade pwntools
sudo python3 -m pip install --upgrade pwntools

Python 2/3 的 pip,把 pwntools 安装或升级到系统 Python2/3 的 site-packages(因为有 sudo,是全局安装)。

校验

image-20251030180306226

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
2
3
git clone https://github.com/pwndbg/pwndbg
cd pwndbg
./setup.sh

这个方法操作简单,但是等待时间长

方法2:

网址

教学视频

image-20251030182802623

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

image-20251030204616771

1
>ln -s /mnt/hgfs/myDesktop ~/Desktop/共享桌面

这是一个把共享文件夹创建快捷方式的例子

1
2
sudo su root
apt install ./pwndbg_2025.10.20_amd64.deb

ropper

ropper 是一个用于查找并利用 ELF/PE 二进制里面的 ROP gadgets(以及其它有用片段)的工具 —— 它能帮你快速定位 pop rdi; retsyscallmov [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

image-20251030210635460

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
2
3
4
5
6
7
8
9
$ seccomp-tools dump ./pwn
line CODE JT JF K
=================================
0000: 0x20 0x00 0x00 0x00000004 A = arch
0001: 0x15 0x00 0x02 0xc000003e if (A != ARCH_X86_64) goto 0004
0002: 0x20 0x00 0x00 0x00000000 A = sys_number
0003: 0x15 0x00 0x01 0x0000003b if (A != execve) goto 0005
0004: 0x06 0x00 0x00 0x00000000 return KILL
0005: 0x06 0x00 0x00 0x7fff0000 return ALLOW

LibcSearcher

校验查找libc

1
2
3
4
5
cd ~/
git clone https://github.com/lieanu/LibcSearcher.git
cd LibcSearcher
sudo python3 setup.py develop
cd ..

free_libc(强烈推荐)

教程

patchelf 是“改装工具” —— 它可以直接修改一个 ELF 可执行文件内部的元信息(比如告诉它“运行时请用这个 ld(解释器)”或“优先在这个目录找库”),从而让程序长期使用你指定的 glibc。

glibc-all-in-one 是“工具包” —— 它提供了很多不同版本的 libc.so 和对应的 ld-*.so(动态链接器/loader)。把这些放在某个目录里,就相当于有许多不同版本的“运行时环境”可用。

典型场景 / 为什么要配合使用

CTF / pwn 场景常见需求是:目标服务运行的是特定版本的 glibc(例如 2.31),而你本地默认系统是不同版本。要在本地复现 exploit,需要:

  1. 拿到那个版本的 libc.so.6 和对应的 ld-linux-x86-64.so.2(这就是 glibc-all-in-one 提供的内容),
  2. 让目标二进制在本地加载这些库(不是系统 libc)。这可以用 patchelf 改 ELF 的 interpreter 与 rpath 来实现,或用 LD_LIBRARY_PATH/LD_PRELOAD 临时覆盖。

优势对比(实用角度)

  • glibc-all-in-one
  • 优点:提供真实、完整、不同版本的 glibc 运行时,保证行为和远端一致。
  • 不修改目标二进制,只提供库文件。
  • patchelf
  • 优点:能把二进制永久或临时修改为“使用指定 loader 和库目录”,方便一次性复现;也能在不改系统设置的情况下把二进制指向本地目录的 libc。
  • 风险:修改二进制,操作前应备份;错误的 interpreter/lib 配置会导致二进制无法执行。

Sublime Text

配置F5快捷键

  1. 点击菜单栏 PreferencesKey Bindings
  2. 在右侧的用户配置文件(Default (Linux).sublime-keymap - User)中,添加如下内容:
1
2
3
4
[
{ "keys": ["f5"], "command": "build" }
]

image-20251030212608899

  1. 保存文件(Ctrl+S)。
  2. 重启 Sublime Text。

在终端交互

  1. 在 Sublime Text 中,点击菜单栏的 Tools -> Build System -> New Build System...
  2. 这会打开一个新的配置文件。删除里面的所有内容,然后粘贴以下代码:
1
2
3
4
5
{
"shell_cmd": "gnome-terminal -- bash -c 'python3 -u \"$file\"; echo \"\"; read -p \"Press Enter to exit...\"'",
"working_dir": "$file_path",
"selector": "source.python"
}

保存这个文件。Sublime Text 会自动打开保存目录,将文件名修改为 PythonInTerminal.sublime-build,然后保存。

步骤 2: 选择并使用新的构建系统

  1. 回到你的 wp.py 文件窗口。
  2. 点击菜单栏 Tools -> Build System,在列表中找到并勾选你刚刚创建的 PythonInTerminal