我想知道,有没有办法通过使用缓冲区溢出漏洞或其他 vuls 覆盖堆栈,以便它覆盖较低的内存地址而不是较高的内存地址!?(英特尔 x86 架构)
问问题
53 次
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 回答