A.程序调用了没有进行边界检查的函数来访问(写操作)缓冲区
B.程序编译时在堆栈上分配了固定大小的缓冲区,并且在对缓冲区进行访问时没有提供边界检查
C.程序启用了GS检查
D.缓冲区开辟过大
A.数据过长导致无法存储在预期区域内,覆盖了存储其他数据的区域的过程被称作溢出
B.一般的溢出不会造成太严重的影响,可能会导致内存错误或程序错误等,但是当溢出被精心利用,就可能导致更严重的安全问题
C.攻击者精心构造的一段机器指令,在溢出攻击时会调用程序执行这段代码,这段代码被称为Shellcode
D.溢出攻击,属于程序编码问题
阻止缓冲区溢出的方法有哪些?
A.不使用不安全的数据拷贝函数;
B.在往缓冲区中填充数据时必须进行边界检查。
C.尽量动态分配内存以存储数据,不要使用固定大小的缓冲区
D.使用进行边界检查的编译器
E.使用户堆栈段不可执行
F.尽量不设置suid/sgid属性