pwntools连gdb调试脚本

使用电脑浏览效果更佳!

摘要

​ 缘起于要了解pwntools编写exp脚本通过send或者sendline发送给二进制程序后,结合gdb调试此刻程序的运行状态,如堆分布。但通过下断点在程序手工输入payload未免太麻烦(也可以说是调试payload吧)。调试的效果如下

1563325392969

解决方案

方案一

利用pwntools的gdb.attach(),直接写在exp里面

如:

#coding:utf-8

from pwn import *

p = process("hacknote_double_free")
magic = 0x400C23

pwnlib.gdb.attach(proc.pidof(p)[0]) # 链接gdb调试,先在gdb界面按下n下一步返回python控制台enter继续(两窗口同步)
def add(size,data):
    print("to send choice") # 添加有意义的调试信息,关键的payload调试线pause一下
    pause() # 
    p.sendafter("choice :","1") # 阻塞,方便gdb的调试
    print("to send size of note")
    pause()
    p.sendafter("size :",str(size))
    print("to send data of note")
    pause()
    p.sendafter("Content :",data)    

方案二

./hacknote.py # 启动当前binary
gdb ./binary # gdb启动调试
gdb>attach(at) (pid可选) # 直接附加到脚本启动的binary进程
gdb>n
# hacknote.py利用脚本中关键payload前pause()
# 错误解决 gdb attach ptrace: Operation not permitted.
# sudo gdb ./binary

 上一篇
Double Free利用解释 Double Free利用解释
使用电脑浏览效果更佳! 摘要​ 记录一道Double Free的利用手法,利用Double Free转为UAF达到控制程序流程目的。基本的思想一般是利用大小在fast_bin范围内的内存块间的错误解析,利用Double Free在
2019-07-17
下一篇 
自选择glibc带符号版本调试 自选择glibc带符号版本调试
使用电脑浏览效果更佳! 摘要​ 在学习堆内存管理器ptmalloc,想深入的了解各版本的glibc库在malloc,free中做的判断与安全保护(如double free的检测),挖掘一些glibc的漏洞与绕过手法,深入调试带符号
2019-07-15
  目录