gpt4 book ai didi

c - 利用 jmp_buf 结构中的缓冲区溢出

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:29:08 26 4
gpt4 key购买 nike

我需要帮助来利用 jmp_buf 结构上的缓冲区溢出。

我在堆栈上有以下值(由 gdb 看到):

0xbffffc40:     0xb7fd8ff4      0x080485a0      0x080483f0      0xbffffcf8
0xbffffc50: 0xebf06081 0x1d0a15ee

第二个是下一个 IP(在 setjmp 之后),但如果我修改它,我不会改变我的程序的行为。

我注意到只有修改最后一个的值才能更改流程(并获得分段)。

但是,我无法理解最后一个词的含义以及如何更改它以获得所需的行为。

最佳答案

我现在正在尝试做同样的事情 - 我不知道你使用的是什么操作系统,但我找到了以下文档(@ http://freebsd.active-venture.com/FreeBSD-srctree/newsrc/dev/vinum/vinummemory.c.html ) 对于 freebsd,它简单地描述了 jmpbuf 结构:

struct JmpBuf {
int jb_ebx; //in your case --> 0xb7fd8ff4
int jb_esp; //in your case --> 0x080485a0
int jb_ebp; //in your case --> 0x080483f0
int jb_esi; //in your case --> 0xbffffcf8
int jb_edi; //in your case --> 0xebf06081
int jb_eip; //in your case --> 0x1d0a15ee
};

因此 0x080485a0 将是存储的 ESP 而不是 EIP,这将解释您的情况中的段错误...

关于c - 利用 jmp_buf 结构中的缓冲区溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6157429/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com