0

我想知道,有没有办法通过使用缓冲区溢出漏洞或其他 vuls 覆盖堆栈,以便它覆盖较低的内存地址而不是较高的内存地址!?(英特尔 x86 架构)

4

1 回答 1

0

这取决于所讨论的缓冲区溢出。

char *buffer_start;
char *buffer_pos;
char *buffer_end;

void write_data(size_t offset, int c)
{
    if (buffer_pos + offset >= buffer_end)
        abort();
    buffer_pos += offset;
    *buffer_pos = c;
    buffer_pos++;
}

在上述情况下,可以通过指定溢出的偏移量来写入低地址。这反过来会导致缓冲区溢出到较低的地址。

提醒一下,要修复缓冲区溢出,您可以编写如下检查:

if (offset >= buffer_end - buffer_pos)
    abort();
于 2013-08-17T22:51:17.203 回答