缓冲区溢出实践
缓冲区溢出实践
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 所使用)和堆栈分割方法。

浙公网安备 33010602011771号