Tag: stack overflow

如何在现代系统上测试缓冲区溢出?

我目前对学习如何进行缓冲区溢出感兴趣。 我已经完成了很多程序集,并了解了堆栈是如何工作的以及如何在C中实现缓冲区溢出。但是,我遇到了很多麻烦,试图让GCC 4.9.1允许我溢出缓冲得当。 我正在运行Debian Jessie。 这是我试图遵循的教程,在2.2节中。 我复制/粘贴了他提供的C程序,我使用的是相同的Perl脚本,所以一切都与他的情况完全相同(当然除了系统)。 这些是我一贯得到的结果: ~/projects/buffer-overflow$ ls run.pl test.c ~/projects/buffer-overflow$ sudo su root@wash# echo “0” > /proc/sys/kernel/randomize_va_space root@wash# exit exit ~/projects/buffer-overflow$ gcc -m32 -fno-stack-protector -zexecstack test.c ~/projects/buffer-overflow$ ./run.pl Address of foo = 0x804845b Address of bar = 0x80484a4 My stack looks like: (nil) 0xffffd4a8 0xf7e58b2f 0xf7fb3ac0 0x8048657 0xffffd494 ABCDEFGHIJKLMNOPP @ Now the […]

什么是堆栈粉碎(C)?

码: int str_join(char *a, const char *b) { int sz =0; while(*a++) sz++; char *st = a -1, c; *st = (char) 32; while((c = *b++)) *++st = c; *++st = 0; return sz; } …. char a[] = “StringA”; printf(“string-1 length = %d, String a = %s\n”, str_join(&a[0],”StringB”), a); 输出: string-1 length = 7,char […]

试图粉碎堆栈

我试图重现stackoverflow结果,我从Aleph One的文章“粉碎堆栈的乐趣和利润”中读到(可以在这里找到: http : //insecure.org/stf/smashstack.html )。 试图覆盖返回地址似乎对我不起作用。 C代码: void function(int a, int b, int c) { char buffer1[5]; char buffer2[10]; int *ret; //Trying to overwrite return address ret = buffer1 + 12; (*ret) = 0x4005da; } void main() { int x; x = 0; function(1,2,3); x = 1; printf(“%d\n”,x); } 拆卸主要: (gdb) disassemble main Dump […]