CSAPP 缓冲区溢出试验】的更多相关文章

缓冲区溢出试验是CSAPP课后试验之一,目的是: 更好的理解什么是缓冲区溢出 如何攻击带有缓冲区溢出漏洞的程序 如何编写出更加安全的代码 了解并理解编译器和操作系统为了让程序更加安全而提供的几种特性 我们可以使用代码注入(code-injection)和返回导向编程(return-oriented-programming)两种攻击手段分别攻击试验提供的ctarget和rtarget程序. ctarget和rtarget会使用getbuf函数从标准输入中读取用户输入: unsigned getbu…
CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数名(bufbomb -t)的差异,不影响我们的实验. 1.实验工具 1.1 makecookie 后面实验中,五次"攻击"中有四次都是使你的cookie出如今它原本不存在的位置,所以我们首先要为自己产生一个cookie. 实验工具中的makecookie就是生成cookie用的.參数是你的…
CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将global_value的值修改为cookie.因为全局变量与代码不在一个段中,所以我们不能让缓冲区一直溢出到.bss段(因为global_value初始化为0,所以它会被放在.bss而非.data段以节省空间)覆盖global_value的值.若修改了.bss和.text之间某些只读的段会引起操作系…
x86-64 Linux 内存结构 先来看看一个程序在内存中是如何组织的.Linux 为每个进程维持了一段单独的虚拟地址空间.(进程是计算机科学中很深刻.很成功的一个概念.当我们在运行一个程序时,会得到一个假象,好像我们的程序是系统当中运行的唯一程序,独占存储器和处理器资源.) 最上面是栈(stack),一般用来保存局部变量,有 8 MB 的大小限制,因此不建议在函数内开大数组,递归的效率低是因为容易栈溢出.栈的增长方向是向下的. 堆(heap),动态分配的内存会在这里处理,例如 malloc.…
一.几个关于指针的小知识点: 1.  malloc是在堆上动态分配内存,返回的是void *,使用时会配合显式/隐式类型转换,用完后需要用free手动释放. alloca是标准库函数,可以在栈上分配任意字节数量的内存,用完自动释放. 2.指针的优先级较低: char (*p)[3],括号中优先级最高,所以p是一个指针,指向一个3个元素的char数组. char *p[3],  因为指针优先级较低,所以*与char结合,p代表一个3个元素的数组,每个元素都是一个char *. 3.函数指针: 它的…
逆向工程[缓冲区溢出攻击] 任务描述 掌握函数调用时的栈帧结构,利用输入缓冲区的溢出漏洞,将攻击代码嵌入当前程序的栈帧中,使程序执行我们所期望的过程. 主要方法 溢出的字符将覆盖栈帧上的数据,会覆盖程序调用的返回地址,这赋予了我们控制程序流程的能力.通过构造溢出字符串,程序将"返回"至我们想要的代码上. 实验包括三个可执行文件: ---| bufbomb为目标程序 ---| makecookie可以生成bufbomb需要的输入参数的cookie(也可以在gdb调试时直接读取寄存器获得)…
程序编译: 1.预处理阶段: 1.文件包含:将#include扩展成文件正文 2.条件编译:根据#if和#ifdef将程序的某部分排除或者包含 3.宏展开:将出现宏引用的地方展开成相应的宏 2.编译阶段: 检查代码的规范性.是否有语法错误等,然后将其转换成低级机器语言.(C会转换成汇编语言) 3.汇编阶段: 将汇编代码转换成二进制目标代码 4.链接阶段: "printf"的函数并没有在代码中实现,且在预编译中包含进的"stdio.h"中也只有该函数的声明 系统默认的…
最近结合软件安全课程上学习的理论知识和网络资料,对缓冲区溢出漏洞的简单原理和利用技巧进行了一定的了解.这里主要记录笔者通过简单的示例程序实现缓冲区溢出漏洞利用的步骤,按由简至繁的顺序,依次描述简单的 shellcode.ret2libc.ROP.Hijack GOT 等缓冲区溢出攻击技术的原理和步骤,以供总结和分享.为了保证缓冲区溢出实践能够顺利进行,需要对编译器选项和操作系统环境进行设置,可参见笔者博客使用Linux进行缓冲区溢出实验的配置记录.同时,针对使用 gdb 动态调试获得的程序局部变…
[译文] 摘要:为一个简单的有漏洞程序写一个简单的缓冲区溢出EXP,聚焦于遇到的问题和关键性的教训,提供详细而彻底的描述 内容表:1. I pity the fool, who can't smash the stack:--介绍&背景2.Welcome to the jungle, we've got fun and wargames:--介绍我们之后要使用的示例&分析它的源代码3. There is no spoon. This causes problems when you try…
缓冲区溢出漏洞实验 本课程详细出自http://www.shiyanlou.com/courses/231,转载请注明出处. 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的…