如何解决在jmp_buf结构中利用缓冲区溢出
|| 我需要帮助来利用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)for freebsd,其中simpy描述了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,这将解释您所遇到的段错误...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。