GDB指北
GDB - 调试利器
官方文档:(Debugging with GDB) (sourceware.org)
多看文档 动手实践 积累记录!
必备插件:
- pwndbg (功能丰富,接口友好,依赖较多)
- Pwngdb (基于 pwndbg 开发, 常用)
- gef (一个文件 依赖少)
- peda (经典插件 依赖少)
- gdb-dashboard (适合单独调试,IOT 设备)
调试组合推荐:
- pwndbg + Pwngdb : 适用于 userland pwn
- gef + Pwngdb : 适用于 qemu/kernel pwn
GDB- 基本认识:
GDB 命令
- 运行
- 步入、步过、步出、步止
- 断点(设置、删除、显示)
- 查看内存、寄存器、各种参数
- 设置内存、寄存器、各种参数、加载文件
- 远程调试
- 其他辅助
如果没有插件时好用的命令:
查看寄存器:i r
常用功能:
- 断点、临时断点、条件断点、断点忽略
- 观察点(watchpoint)、捕捉系统调用(catchpoint)
- 信号处理
- 多进程调试
- 多线程调试
- 日志记录
寄存器
在 gdb 中查看: i r
步入/步过/步出/步止
- 步过:一行一行的往下走,不会进入到其他方法的内部
next
nexti
(配合finish
使用) - 步入:如果当前行有方法执行,可以进入方法的内部(不会进入官方定义的方法,仅能进入自定义的方法
step
stepi
- 步出:从步入的方法内执行完该方法,然后退出到方法调用处。
finish
断点
b main
查看/设置 内存
x | p | set
字节大小
BYTE 1 8 缩写b
WORD 2 16 缩写h
DWORD 4 32 缩写w
QWORD 8 64 缩写g
x 按十六进制格式显示变量。
d 按十进制格式显示变量。
u 按十六进制格式显示无符号整型。
o 按八进制格式显示变量。
t 按二进制格式显示变量。
a 按十六进制格式显示变量。
c 按字符格式显示变量。
f 按浮点数格式显示变量。
查看汇编:x/20i $rip
查看内存:x/20gx 0x7fxx10
x/20wx 0x7fxx10
查看字符:x/20s 0x7fxx20
查看变量:p __malloc_hook
、p &__malloc_hook
赋值: set *0x7fxx1 = 1
、 set $rax = 1
、set *((unsigned int)$ebp) = 0x61
dq | dd | dw | db
dq 0x8048123
TMUX - 分屏复用
官方文档: https://man7.org/linux/man-pages/man1/tmux.1.html
tmux 使用手册: http://louiszhai.github.io/2017/09/30/tmux/#导读
~/.tmux.conf 文件配置如下:
1 |
|
windows terminal +tmux 鼠标选中后 按下 C-v 即可复制
tmux 分屏复用功能:
1 |
|
反编译工具 IDA/Ghidra/jeb
IDA 帮助文档:
Ghidra 帮助文档:https://ghidra-sre.org/
Jeb: https://www.pnfsoftware.com/
IDA
https://www.pediy.com/kssd/pediy12/ida.html 古老经典教程
IDA 常用快捷键
下断点的方式
远程调试 (idaserver)
docker
dokcer 的应用与实践:http://yeasy.gitbook.io/docker_practice/
- pwndocker
- debug_pwn_env
必备工具
checksec : 检查安全编译选项
libc-database : 详情查看它的 readme, 在百度网盘中已备份
ROPgadget/ropper: 寻找 gadget
[在线编译 Assembler]:https://defuse.ca/online-x86-assembler.htm
(找 syscall;ret gadget => 在 vscode 里搜索 0F05)
one_gadget: 特殊的 gadget, 一键 shell 的返回地址 (多加-l 2
)
seccomp-tools: 查看程序的沙箱/输出沙箱 C
glibc-all-in-one: 多版本 libc
patchelf: 改变程序链接库、装载库的路径(路径越短越好)
readelf: 分析 ELF 程序的工具
objdump: 分析二进制文件的工具
heaptrace/gef-tracemalloc : 用于定位堆的申请与释放
- 程序混淆严重
- 非 C/C++程序
- 容器
- ….
Decomp2dbg- 与 IDA 联动:
- p /x $v8
- tele 0x555555ed20
- …
pwnpatch:
dl_dbgsym : 可弃用 glibc-all-in-one
pwninit :
alpha3: 用字母写 shellcode
GTFObins: 提权
微信支付
支付宝支付
“如果你觉得这个博客对你有帮助,欢迎打赏!”