欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 溢出概念总结

溢出概念总结

2025/1/4 9:30:25 来源:https://blog.csdn.net/CLAY0011/article/details/144859093  浏览:    关键词:溢出概念总结

什么是溢出?

正数加正数,不可能等于一个负数,如果出现了,就是溢出。负数加负数,也不可能等于一个正数,如果出现了就是溢出。溢出的概念,只发生在有符号数。无符号数,是没有溢出这个概念的。

于是,这就涉及到了,有符号数的大小判断。因为CMP,作的是目的操作数,减去源操作数的一个减法运算。试想一下,如果目的操作数,是一个正数,而源操作数,是一个负数。那么,正数减去负数,就相当于正数加正数。

有符号数,正数的最高位,是0。但是,两个正数相加,最高位,可能溢出,变成了1。这不就出现了负数了吗。

从,目的操作数,与源操作数的符号(正负),可知,目的操作数为正数,肯定大于负数。结果为,">“,大于。

发生了溢出之后,OF=1。但SF=1(负数)。此时,OF=SF,所以是大于。

缓冲区溢出(Buffer overflow)

编写程序时没有考虑到控制或者错误控制用户输入的长度,本质就是向定长的缓冲区中写入了超长的数据,造成超出的数据覆写了合法内存区域

栈溢出(Stack overflow)

是最常见,漏洞比列最高,危害最大的二进制漏洞

在CTF PWN中往往是漏洞利用的基础

比如:

int overflow()
{char buf[8];		read(0,buf,16)
}

char buf[8];

#定义了一个char类型的个数位8的变量,所以缓冲区长度位8,

read(0,buf,16)

#但是向buf read了一个16的内容

堆溢出(Heap overflow)

堆管理器复杂,利用花样繁多

CTF PWN中的常见题型

Data段溢出(比如bss段,比较少见)

攻击效果依赖于Data段 上存放了何种控制数据

注:总结于星盟安全团队CTF-PWN课程

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com