@rg070836rg
2017-11-14T08:16:31.000000Z
字数 1142
阅读 2748
USTC网络安全
SA17011008 陈实 2017年11月14日 实验 4
32位Linux系统下的C函数如下:void foo01(){char buff[16];char Lbuffer[] = "01234567890123456789========ABCD";strcpy (buff, Lbuffer);}void foo02(){char Lbuffer[] = "01234567890123456789========ABCD";char buff[16];strcpy (buff, Lbuffer);}用foo01()和foo02()替换buffer_overflow.c中的foo(), 通过GDB调试,说明foo01()和foo02()是否存在缓冲区溢出漏洞。
ubuntu 16.04
①关闭地址随机化
sudo sysctl -w kernel.randomize_va_space=0
②关闭栈随机化设置
sudo /sbin/sysctl -w kernel.randomize_va_space=0

①编写并编译运行
#include <stdio.h>#include <string.h>char Lbuffer[] = "01234567890123456789========ABCD";void foo(){char buff[16];strcpy (buff, Lbuffer);}int main(){foo();return 0;}

②GDB调试
gdb bufr

③ 反编译main&foo
disas main

disas foo

①编写并编译运行foo1
#include <stdio.h>#include <string.h>void foo1(){char buff[16];char Lbuffer[] = "01234567890123456789========ABCD";strcpy (buff, Lbuffer);}int main(){foo1();return 0;}

②调试
发生错误
①编写并编译运行foo2
#include <stdio.h>#include <string.h>void foo02(){char Lbuffer[] = "01234567890123456789========ABCD";char buff[16];strcpy (buff, Lbuffer);}int main(){foo02();return 0;}

②调试
未发生错误
通过本次实验,对缓冲区溢出攻击的原理有了更进一步的理解,需要更进一步的去了解shellcode原理与攻击。
