我试图在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";')