PWN 入门核心工具与命令大全

一、🧪 调试工具:GDB 及插件

1. GDB 基础命令

功能命令示例
启动调试gdb ./binary
运行程序runr
设置断点break *0x40123ab main
查看寄存器info registers 或简写 i r
查看内存x/10wx 0x601000(10 个 4字节 hex)
堆栈查看x/20wx $rspx/20gx $rbp
反汇编函数disas maindisassemble main
单步执行ni(下一条)/ si(进入调用)
继续运行continuec

📌 推荐配置 .gdbinit

set disassembly-flavor intel
set pagination off

2. GDB 插件(增强体验)

✅ 推荐插件:pwndbg(或 GEF、PEDA)

        安装:

git clone https://github.com/pwndbg/pwndbg
cd pwndbg && ./setup.sh
功能示例命令
查看堆布局heap
查看内存映射vmmap
查找函数telescope $rsp
修改内存set {char}0x601000 = 0x41

二、🔍 反汇编与静态分析工具

1. objdump(快速反汇编)

命令含义
objdump -d ./binary反汇编全部代码
objdump -M intel -d ./binary使用 Intel 风格
objdump -h ./binary查看节区信息(.text/.data等)

2. radare2(强大但需适应)

常用流程:

r2 ./binary       # 打开文件
aaa               # 自动分析
afl               # 查看函数列表
pdf @main         # 查看 main 函数反汇编

3. IDA Pro / Ghidra(图形界面静态分析)

IDA Free 适合小文件

Ghidra 开源免费,支持多平台

适合查看复杂控制流、结构体、函数引用


三、💥 漏洞利用开发工具

1. pwntools(Python 库)

基本模板:
from pwn import *

context(arch='amd64', os='linux', log_level='debug')

p = process('./binary')           # 本地调试
# p = remote('host', port)        # 远程服务

payload = b'A' * offset + p64(addr)
p.sendline(payload)
p.interactive()
常用函数:
函数用途
cyclic(100)生成 De Bruijn 序列
cyclic_find(0x6161616b)定位偏移
ELF('./binary')加载 ELF 文件获取符号表等
libc = ELF('libc.so.6')配合远程漏洞调试
ROP(elf)构造 ROP 链

2. one_gadget(快速查找 system Gadget)

查找满足 execve("/bin/sh") 条件的 gadget:

one_gadget libc.so.6

结果示例:

0x4f3d5 execve("/bin/sh", rsp+0x40, environ)

3. ROPgadget(ROP 工具)

ROPgadget --binary ./binary

可配合 pwntools 自动构建:

rop = ROP(elf)
rop.system(next(elf.search(b"/bin/sh")))

四、🛡️ 二进制保护检测工具

1. checksec(保护机制检测)

checksec --file=./binary

示例输出:

RELRO           : Partial RELRO
Stack Canary    : No canary found
NX              : NX enabled
PIE             : No PIE (0x400000)

2. file(查看类型)

file ./binary

3. strings(提取字符串)

strings ./binary | grep 'flag'

五、🧱 编译与补丁工具

1. gcc(调试编译)

gcc -no-pie -fno-stack-protector -z execstack -g -o a.out demo.c

添加 -g 生成调试符号;去除 PIE、Canary、NX 等便于练习

2. patchelf(替换 libc)

patchelf --set-interpreter ./ld-2.27.so ./binary
patchelf --replace-needed libc.so.6 ./libc-2.27.so ./binary

六、🌐 网络与本地服务工具

1. nc(netcat)

nc host port                # 连接远程服务
nc -lvnp 1234               # 本地监听(v=verbose, n=no-DNS, p=port)

2. socat(双向转发 + 服务)

socat TCP-LISTEN:1234,reuseaddr,fork EXEC:./binary

可用于将本地程序包装成网络服务模拟远程环境。

七、🛠️ 其他调试辅助工具

1. strace(追踪系统调用)

strace ./binary

可查看 open/read/write 等系统行为。

2. ltrace(追踪库函数调用)

ltrace ./binary

用于追踪 puts, strcmp 等动态链接函数。

3. ldd(查看依赖库)

ldd ./binary

✨ 附:调试命令速查表(汇编视角)

功能命令
当前指令x/i $rip
寄存器info registers
单步汇编ni(下一条)
单步进入函数si(进入调用)
反汇编主函数disas main
查看字符串x/s 0xaddr
堆栈查看x/20gx $rsp
跳过函数调用set $rip = 0xaddr

时光匆匆,一篇博客又到了结尾处啦。真心感谢每一位愿意花时间阅读我文字的朋友,希望你们每天都过得开开心心的,生活顺顺利利哦,咱们下次再通过文字‘相遇’呀。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值