ReStr0
Venom战队队员 Chamd5安全团队
ReStr0-Blog

GDB使用知识库

稍微整理了一些常用指令,存在部分重复,后期维护修改

命令缩写效果
gdb <file> <*pid>添加新程序
gdb attach <pid>负载运行的程序
set args <*argv>设置程序运行参数
show args查看设置好的运行参数
quitq退出gdb
symbol <file>sy导入符号表
info <*b>i查看程序的状态/*查看断点
framef查看栈帧
backtracebt查看堆栈情况
listl显示源代码(debug模式)
displaydisp跟踪查看某个变量
starts启动程序并中断在入口debug模式停在main(),否则停在start()
runr直接运行程序直到断点
continuec暂停后继续执行程序
nextn单步步过
steps单步步入,函数跟踪
finishfin跳出,执行到函数返回处
break /*<addr>b下断点 //给开启了PIE的下断点需要使用b *$rebase(addr)
watch下内存断点并监视内存情况
printp打印符号信息(debug模式)
i r a查看所有寄存器
i r <esp/ebp..>查看某个寄存器
set $esp = 0x01修改某个寄存器的值
heap查看分配的chunk
vmmap查看内存分配情况
bin查看 Bin 情况
x /<num><n/f/u>显示内存信息,具体用法附在下面
context打印 pwnbdg 页面信息
dps <addr>优雅地显示内存信息
disassemble <func>打印函数信息
vmmap显示程序内存结构
search <*argv>搜索内存中的值输入 search -h 可查询用法
checksec查看程序保护机制
parseheap优雅地查看分配的chunk
aslr <on/off>打开/关闭 ASLR 保护
pshow显示各种踏板选项和其他设置
dumpargs <num>显示在调用指令处停止时传递给函数的参数
dumprop <from> <to>显示特定内存范围内的所有ROP gadgets
elfheader从调试的elf文件获取头信息
elfsymbol从ELF文件获取非调试符号信息
procinfo显示来自/proc/pid的各种信息
readelf从elf文件获取头信息
fmtarg 地址格式化字符对应的偏移
parseheap查看堆块
bins查看bin信息
hexdump 选填地址查看十六进制信息
telescope 地址查看链表
heap查看heap结构
heapinfo查看heap信息

X指令具体用法:

格式:

x/<n/f/u>  <addr>
n:是正整数,表示需要显示的内存单元的个数,即从当前地址向后显示n个内存单元的内容,
一个内存单元的大小由第三个参数u定义。

f:表示addr指向的内存内容的输出格式,s对应输出字符串,此处需特别注意输出整型数据的格式:
  x 按十六进制格式显示变量.
  d 按十进制格式显示变量。
  u 按十进制格式显示无符号整型。
  o 按八进制格式显示变量。
  t 按二进制格式显示变量。
  a 按十六进制格式显示变量。
  c 按字符格式显示变量。
  f 按浮点数格式显示变量。

u:就是指以多少个字节作为一个内存单元-unit,默认为4。u还可以用被一些字符表示:
  如b=1 byte, h=2 bytes,w=4 bytes,g=8 bytes.

<addr>:表示内存地址。

pwndbg生成字符:cyclic 200

pwndbg计算偏移:cyclic -l rsp|esp

peda生成字符pattern create 200

peda计算偏移量 pattern search

gdb插件切换

想用 peda:
echo “source ~/GDB-Plugins/peda/peda.py” > ~/.gdbinit
想用 peda-heap:
echo “source ~/GDB-Plugins/peda-heap/peda.py” > ~/.gdbinit
想用 gef:
echo “source ~/GDB-Plugins/gef/gef.py” > ~/.gdbinit1想用 pwndbg:
echo “source ~/GDB-Plugins/pwndbg/gdbinit.py” > ~/.gdbinit

借助ROPgadget和ropper生成ROPchain

ROPPER: ropper –file rop_filename –chain execve

ROPgadget: ROPgadget –binary inndy_rop –ropchain

发表评论

textsms
account_circle
email

ReStr0-Blog

GDB使用知识库
稍微整理了一些常用指令,存在部分重复,后期维护修改 命令缩写效果gdb <file> <*pid>添加新程序gdb attach <pid>负载运行的程序set args <*argv>设置程序运…
扫描二维码继续阅读
2021-08-08