堆栈溢出 - 保存的帧指针上的sigsegv错误

时间:2014-01-21 19:32:10

标签: c stack overflow buffer

我试图在64位Linux操作系统上运行简单的缓冲区溢出。问题是,似乎如果保存的帧指针被覆盖,我会收到总线错误(SIGSEGV)。

这是C代码:

#include <string.h>
#include <stdio.h>

void func(char *buffer)
{
    char string[24];
    strcpy (string, buffer);
}

int main (int argc, char *argv[])
{
    if (argc > 1)
        func(argv[1]);

    printf("asdf\n");
}

我想发布内存的截图,但我是新的,我不能......它是这样的:

我用0x4141414141414141或0xffffffffffffffff覆盖保存的帧指针,并使用有效地址(如0x400595)覆盖。 然后我得到一个SIGSEGV错误......

以下是我给控制台的输入:

./a.out $(perl -e 'printf "A" x 36 . "\x95\x05\x40";')

0 个答案:

没有答案