缓冲区溢出攻击防护方法
1、缓冲区溢出的攻击大致分为以下几类:栈溢出(stack smashing)未检查输入缓冲区长度,导致数组越界,覆盖栈中局部变量空间之上的栈桢指针%ebp以及函数返回地址retaddr。

3、格式化字符窜漏洞(format stringvulnerability):如果格式窜由用户定制,攻击者就可以任意伪造格式窜,利用*printf()系列挣窝酵聒函数的特性就可以窥探堆栈空间的内容,超常输入可以引发传统的缓冲区溢出,或是用”%n”覆盖指针、返回地址等。

5、其他的攻击手法(others):只能算是手法,不能算是一种单独的类别。利用ELF文件格式的特性如:覆盖.plt(过程连接表)、.dtor(析构函数指针)、.got(全局偏移表)、return-to-libc(返回库函数)等的方式进行攻击。

6、Stackguard:因为缓冲区溢出的通常都会改写函数返回地址,stac氯短赤亻kguard是个编译器补丁,它产生一个"canary"值(一个单字)放到返回地址的前面,如果 当函数返回时,发现这个canary的值被改变了,就证明可能有人正在试图进行缓冲区溢出攻击,程序会立刻响应,发送一条入侵警告消息给syslogd, 然后终止进程。
