如何检测缓冲区溢出

 时间:2024-10-11 18:35:48

1、基于输入字符串的检测方法对输入的字符串进行检测,确定其为溢出攻击字符串时采取阻拦措施,使攻击者无法注入攻击代码。一般有以下3 种方法构建溢出攻击字符串。如图所示:第1 种溢出攻击字符串适用于缓冲区大于ShellCode 长度的情况;第2 种溢出攻击字符串一般用于缓冲区小于ShellCode 长度的情况;第3 种方法是将ShellCode 放在环境变量里,是目前较为常用的方法。

如何检测缓冲区溢出

2、基于保护堆栈中返回地址的检测方法缓冲区溢出攻击最关键的步骤是要通过修改函数返回地址来改变程序的流程,因此,在函数调用返回前,通过检查返回地址是否被修改可以判断是否有缓冲区溢出攻击发生。该检测的实现可以通过在源码中插入一些约束和判断的模块,然后在编译后的程序运行期间对有关变量和堆栈区域进行监控,检测是否有攻击发生。StackGuard 和StackShield 就是这一类型的工具,它们都是gcc 编译器的扩展工具,用于监控调用的函数返回地址是否正常。

如何检测缓冲区溢出

3、基于监视系统调用的检测方法如果攻击者成功注入攻击代码,并改变了程序的执行流程使指令的执行指针指向了ShellCode 的入口地址。按照一次缓冲区攻击的3 个步骤,还须执行ShellCode 来完成攻击目的。因此,通过检测是否有ShellCode 运行可以检测是否发生缓冲区溢出攻击。攻击者既希望ShellCode 利用获得的权限启动一个交互式的shell 进程来完成尽量多的事情,又希望ShellCode 尽量短小从而更加隐蔽,所以绝大多数ShellCode 都会调用系统函数。由于监视所有系统调用会耗费大量系统资源,因此只对ShellCode 常用的系统调用进行监视,根据某些特征判断受监视的系统调用是否为非法调用就可确定被保护系统是否遭到缓冲区溢出攻击。例如,如果发现系统调用的返回地址为堆栈,则可认为其为非法调用,因为很少有程序在堆栈上运行代码。

  • 苹果8x丢了怎么找回
  • 手机寄厄瓜多尔
  • 那些吃喝习惯会导致出现结石
  • Egde浏览器中怎么获取“Snapchat”
  • 换季肌肤敏感怎么办?
  • 热门搜索
    清明节手抄报全国第一 关于大自然的手抄报 国庆节手抄报简单漂亮 英语手抄报设计图 关于文学的手抄报 花的手抄报 六一手抄报简单又好画 预防结核病手抄报内容 感恩母亲节手抄报 有趣的汉字手抄报图片