小结:
1.栈溢出
2.堆溢出
3.整数溢出漏洞
4.格式化字符串漏洞
栈溢出
通过如scanf、strcpy、read等危险的输入函数存在的漏洞使输入数据对栈空间内容进行覆盖导致溢出。
堆溢出
通过向动态申请获得的堆空间内写入超过堆空间的数据导致下一个堆的堆头信息被破坏(即空闲堆链表指针被覆盖),当使用到该指针操作时(堆申请,或堆释放)会发生溢出,甚至奔溃。
整数溢出
有符号数和无符号数进行转换时会发生,存储的数值超过该类型整数的最大值就会发生溢出。
如int类型下,65540等价于4。
格式化字符串漏洞
格式化漏洞产生的原因主要是对用户输入的内容没有做过滤,黑客利用恶意构造的输入数据,使用%s和%x等格式符,从堆栈和其他内存位置输出数据,也可以使用格式符%n向任意地址写入数据,配合printf()等函数就可以向任意地址写入被格式化的字节数,可能导致任意代码执行,或者读取敏感数据。
原文:https://www.cnblogs.com/glodears/p/12718147.html