解释缓冲区溢出的原理,并给出例子.最好能给出相应的ShellCode

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/29 04:28:07
解释缓冲区溢出的原理,并给出例子.最好能给出相应的ShellCode

解释缓冲区溢出的原理,并给出例子.最好能给出相应的ShellCode
解释缓冲区溢出的原理,并给出例子.
最好能给出相应的ShellCode

解释缓冲区溢出的原理,并给出例子.最好能给出相应的ShellCode
存在缓冲区溢出的程序,一般会报错: “0x?”指令引用的“0x?”内存.该内存不能为“read”.“0x?”指令引用的“0x?”内存,该内存不能为“written”.这类错误,并不是像一般人想象得那么简单,如果程序出现这种错误,多半证明该程序存在缓冲区溢出漏洞,前面第一个"0x?"为程序的当前指令指针,也就是EIP,eip保存着下次将要执行的指令在代码段的偏移量,而后面的那个"0x?"是栈指针,也就是ESP.现在的计算机不能正确区分指令与数据,所以当我们把数据作为指令提交给处理器时,它也会很高兴的执行这些“指令”,正是因为这个原因,程序去执行的不是指令,而是数据,所以这个错误就产生了,而这个数据,又没有大到那种覆盖SEH(异常处理链表)的程度,所以,windows把这个错误报出来..当Windows遇到一个它不知道如何处理的异常时,它就查找异常处理链表(SEH),然后报出错误,如果说当这个数据足够大,就会覆盖了SEH.黑客通常可以利用NRS进行windows下程序的溢出,先NOP 空操作,然后jmp esp,使ESP和EIP相等,比如windows下的"\X12\X45\XFA\X7F",最后是ShellCode,ShellCode是精心构造好的机器码.说得简单点,这个程序对内存分配不合理,或者对数据检查不严格造成报错...而且这是非常危险的.