Bootstrap

Pwn 入门核心工具和命令大全

一、调试工具(GDB 及其插件)

GDB

启动调试:gdb ./binary

运行程序:run 或 r

设置断点:break *0x地址 或 b 函数名

查看寄存器:info registers

查看内存:x/10wx 0x地址 (查看 10 个 4 字节的十六进制值)

反汇编:disassemble 函数名 或 disas

单步执行:ni(汇编级单步) / si(进入函数调用)

查看堆栈:x/20wx $sp

GDB 插件

Pwndbg / GEF / Ped:增强型调试插件

查看堆布局:heap

查看进程映射:vmmap

查找 ROP Gadget:ropgadget

二、反汇编与逆向工具

objdump

反汇编二进制文件:objdump -d ./binary

查看节头信息:objdump -h ./binary

radare2

打开文件:r2 ./binary

分析二进制:aaa

反汇编主函数:pdf @main

IDA Pro / Ghidra

图形化逆向工具,用于静态分析(无命令行依赖)。

三、漏洞利用开发工具

1.pwntools(Python 库)

基础模板:(python)

from pwn import *

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

p = process('./binary') # 本地调试

p = remote('host', port) # 远程连接

payload = b'A' * offset + p64(gadget_addr)

p.sendline(payload)

p.interactive()

常用函数:

cyclic(100):生成 De Bruijn 序列

cyclic_find(0x61616162):计算偏移

elf = ELF('./binary'):加载 ELF 文件

libc = ELF('/lib/x86_64-linux-gnu/libc.so.6'):加载 Libc

2.one_gadget

        查找 Libc 中的 execve('/bin/sh') 地址:one_gadget libc.so.6

3.ROPgadget

        查找 Gadget:ROPgadget --binary ./binary

四、二进制分析工具

checksec

检查二进制防护机制:checksec --file=./binary

输出内容示例:

Arch: amd64-64-little

RELRO: Partial RELRO

Stack: No canary found

NX: NX enabled

PIE: No   PIE (0x400000)

file

查看文件类型:file ./binary

strings

提取字符串:strings ./binary | grep 'keyword'

五、编译与补丁工具

gcc

        关闭堆栈保护编译:gcc -no-pie -fno-stack-protector -z execstack -o demo demo.c

patchelf

        修改二进制依赖的 Libc:patchelf --set-interpreter /path/to/ld.so --replace-needed libc.so.6         /path/to/libc.so ./binary

六、网络工具

nc (netcat)

        连接远程服务:nc host port

        监听端口:nc -lvp 1234

socat

        启动服务:socat tcp-listen:1234,reuseaddr,fork exec:./binary

七、其他实用命令

strace

跟踪系统调用:strace ./binary

ltrace

跟踪库函数调用:ltrace ./binary

python3

快速计算地址偏移:python3 -c 'print(0xdeadbeef - 0xc0ffee)'

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

;