在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,这将解释您所遇到的段错误...     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...