热门
最新
红包
立Flag
投票
同城
我的
发布
u小鬼
4 年前
trueqq_23096319
立个flag,多写一些针对一个小问题的思考博客。上ml课,发现好多知识漏洞,但又没时间完整学一遍,只能“定点爆破”了。
下一条:
根据被覆盖数据的位置的不同,缓冲区溢出分为静态存储区溢出、栈溢出和堆溢出等3种。发生溢出后,进程可能的表现有3中:一种是正常运行,被覆盖的是无用的数据,并没有发生访问违例。二是运行出错,包括输出错误和非法操作等。三是受到攻击,程序开始执行有害代码,攻击者就能获取对系统的控制。基本原理:黑客精心设计一个EIP(执行接口程序),使程序发生溢出之后改变正常流程,转而去执行他们设计好的一段代码,攻击者就能获取对系统的控制,利用ShellCode实现各种功能,如:监听一个端口,添加一个用户,等等。缓冲区溢出源于程序执行时需要存放数据的空间,也即我们所说的缓冲区。 缓冲区的大小是程序执行时固定申请的。然而,某些时候,在缓冲区内装载的数据大小是用户输入的数据决定的。程序开发人员偶尔疏忽了对用户输入的这些数据作长度检查,由于用户非法操作或者错误操作,输入的数据占满了缓冲区的所有空间,且超越了缓冲区边界延伸到缓冲区以外的空间。我们称这个动作为缓冲区溢出。缓冲区溢出是由于系统和软件本身存在脆弱点所导致的。 例如目前被广泛使用的C和C++,这些语言在编译的时候没有做内存检查,即数组的边界检查和指针的引用检查,也就是开发人员必须做这些检查,可是这些事情往往被开发人员忽略了;标准C库中还存在许多不安全的字符串操作函数,包括:strcpy,sprintf,gets等等,从而带来了很多脆弱点,这些脆弱点也便成了缓冲区溢出漏洞。
立即登录