缓冲区溢出实践

缓冲区溢出实践

20191331lyx

一、实验环境

实验楼 https://www.lanqiao.cn/courses/231

二、实验准备

关闭内存地址空间随机化

三、开始实践

进入32位linux环境

本次实验的shellcode

编写漏洞程序

关闭gcc编译保护

精确定位esp寄存器位置

在代码中插入esp寄存器地址

进行缓冲区溢出攻击

实验验证原理

  • 缓冲区溢出:缓冲区溢出是一种常见且危害很大的系统攻击手段,通过向程序的缓冲区写入超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,使程序转而执行其他的指令,以达到攻击的目的。

  • C语言编程中,一些不作边界检查的字符串拷贝函数(如strcpy)容易造成缓冲区溢出。

常见的缓冲区溢出防御手段

  • 基于探测方法(canary)的防御。这包括 StackGuard(由 Immunix 所使用)、ProPolice(由 OpenBSD 所使用)和 Microsoft 的 /GS 选项。

  • 非执行的堆栈防御。这包括 Solar Designer 的 non-exec 补丁(由 OpenWall 所使用)和 exec shield(由 Red Hat/Fedora 所使用)。

  • 包括 libsafe(由 Mandrake 所使用)和堆栈分割方法。

posted @ 2021-10-31 21:03  20191331liyu  阅读(18)  评论(0编辑  收藏  举报