溢出攻击,溢出攻击介绍

溢出攻击介绍 - 网络安全 - 电脑教程网

溢出攻击介绍

日期:2007-04-13   荐:
感觉要真的在安全方面有深的发展,必须要学会去理解一些思想,还要善于归纳总结,最后提出自己见解,自己的思想。

  像溢出攻击,虽然已经是发展了那么多年了,但其shellcode编写也差不多是那么一个模式。写出汇编,编译,得到二进制代码,修改汇编,编译,再得到二进制代码,最后用\0aa\0xbb的形式把二进制代码写到攻击程序里面。这在unix等下面一般shellcode要求比较简单,那还勉强过得去,但如果应用限制,shellcode代码不能包含一些特殊字符那又是一个麻烦的调试、修改过程。还有溢出攻击的溢出点、怎么跳到 shellcode,虽然unix下面已经比较多的办法了,但感觉也没怎么统一的考虑过,很多人也没有去理解溢出攻击。还有溢出过程形参被覆盖后不能返回的情况,也没怎么仔细考虑。

  个人的理解溢出攻击只是通过外部条进改变了程序原来流程,而考虑这个改变程序流程就不只是溢出了,溢出攻击只是一个比较容易让程序改变并且按我们意愿运行的比较方便的办法,还有一些边界条进,函数指针等都可能引起程序流程改变。像缓冲溢出覆盖形式参数不能返回的问题,我们攻击是改变的程序流程,这个流程方向不能返回了,那到底有别的流程没有?就可以考虑程序流程的别的线。这点unix下面有信号机制,WINDOWS下面也有异常结构处理,这些都是程序运行的另一个隐蔽的流程。想到这了就可以有解决办法了。
  其实UNIX等下面发展的比较好的一些保护缓冲溢出的办法很多也相应有了一些破解思路。像堆栈里面加上随机数等的办法,就是检测溢出后不让其返回到溢出代码,这与形参被覆盖不能返回不就是一样的吗。这在windows下面就很好的可以绕过了,UNIX没有具体看代码,还没有实现细节。

  还有溢出代码攻击,归纳后不外乎几点。
  1、确定溢出点;有代码可以找到精确溢出点,没代码呢?
  2、SHELLCODE定位;
  3、跳转到SHELLCODE办法;
  4、SHELLCODE编写;怎么方便编写、修改、调试。
  5、SHELLCODE怎么满足环境要求,比如不能包含一些特殊字符。
  6、SHELLCODE的一些高级要求。

  再想多一点,归纳归纳就得到:怎么用一个溢出程序,统一大部分的溢出攻击呢?

(出处:http://www.sheup.com)




标签: