一次简单缓冲区溢出过程的记录

这次缓冲区溢出是在实验楼上 finish 的。关于步骤的问题,就不说了,给一个实验步骤的地址。

在这次缓冲区溢出的实验中,出现了以下问题:

  1. 如何知道操作系统是32位的还是64位的?
  2. 当使用地址空间随机化来分配堆和栈的初始地址时,应该如何猜解内存地址?
  3. Linux系统在缓冲区溢出和其它的shell攻击上进行了防范,应该如何突破这个问题?
  4. 实验步骤中给定的shellcode的原理是什么?
  5. 攻击程序中的"\90\90"的数量对程序是否有影响?有的话,有什么影响?
  6. GDB调试时的命令都是什么作用?
  7. GCC编译时的命令作用?
  8. 缓冲区溢出攻击的原理?
  9. 如何在远程登录不知道root密码的电脑上实现该过程?

第一个问题:

当登录到一台linux主机时,我们可以采用这些方法来查看主机是32位还是64位(此处引用其他博客的内容)。

第二个问题、第三个问题:

暂时还没学会,希望会的大牛们给与适当的指引。

第四个问题:实验步骤中的shellcode的原理?

这段shellcode代码的重点在于name数组,name数组中存储了可执行文件的路径:/bin/bash和可执行文件:/bin/bash。execve()函数的执行过程:创建一个子进程,子进程没有环境变量且在"/bin/bash"路径下,执行"/bin/bash"命令。

但是,这段代码的功能是什么?为什么这样写?希望懂得大神可以解释一下。

第五个问题:exploit.c程序中的"\90"数量有没有影响?

这个问题的答案可以在实验之后给出,答案就留给想实践的人去寻找了。

第六个问题:GDB调试命令的作用?

GDB调试命令总结。关于一些不太一样的地方,请参考用户手册。

第七个问题:GCC编译时的命令的作用?

GCC选项简介

第八个问题:缓冲区溢出的原理?

在《0day安全:软件漏洞分析技术》一书中有详细解释。之后总结。

第九个问题:如何在远程登录不知道root密码的电脑上实现该过程?

暂时不会,希望大神指点。

时间: 2024-09-29 10:20:32

一次简单缓冲区溢出过程的记录的相关文章

缓冲区溢出详解

1 缓冲区溢出原理 缓冲区是一块连续的计算机内存区域,可保存相同数据类型的多个实例.缓冲区可以是堆栈(自动变量).堆(动态内存)和静态数据区(全局或静态).在C/C++语言中,通常使用字符数组和malloc/new之类内存分配函数实现缓冲区.溢出指数据被添加到分配给该缓冲区的内存块之外.缓冲区溢出是最常见的程序缺陷. 栈帧结构的引入为高级语言中实现函数或过程调用提供直接的硬件支持,但由于将函数返回地址这样的重要数据保存在程序员可见的堆栈中,因此也给系统安全带来隐患.若将函数返回地址修改为指向一段

CSAPP缓冲区溢出实验记录(三)

Level 5 Nitroglycerin (10 分) 题目说明:这一关是一道加分题.在bufbomb程序中还有一个'-n'的选项,使用这个选项时,bufbomb会运行Nitro模式,此时程序不会调用getbuf,而是调用getbufn: int getbufn() {     char buf[512];     Gets(buf);     return 1; } 这个函数与getbuf所不同的是,分配了512字节的字符数组,而调用getbufn的函数会在栈中随机分配一段存储区,这导致ge

windows下简单的缓冲区溢出之slmail

缓冲区溢出是什么? 当缓冲区边界限制不严格时,由于变量传入畸形数据或程序运行错误,导致缓冲区被"撑暴",从而覆盖了相邻内存区域的数据 成功修改内存数据,可造成进程劫持,执行恶意代码,获取服务器控制权等后果 POP3   PASS 命令存在缓冲区溢出漏洞   无需身份验证实现远程代码执 软件下载 slmail          http://slmail.software.informer.com/5.5/ mona.py      https://github.com/corelan/

使用Linux进行缓冲区溢出实验的配置记录

在基础的软件安全实验中,缓冲区溢出是一个基础而又经典的问题.最基本的缓冲区溢出即通过合理的构造输入数据,使得输入数据量超过原始缓冲区的大小,从而覆盖数据输入缓冲区之外的数据,达到诸如修改函数返回地址等目的.但随着操作系统和编译器针对缓冲区溢出问题引入防护机制,初学者想要由简入繁的学习和实践缓冲区溢出的原理变得困难.在 Linux 环境下,用户可以通过设置编译和系统环境来去除某些防护措施,从而方便的完成某些简单的缓冲区溢出实验. 1.关闭SSP( Stack Smashing Protector

CSAPP缓冲区溢出实验记录(一)

题目说明: 开启漏洞之旅,从基础做起.近日,下载了CMU为<深入理解计算机系统>(CSAPP)一书教学配合的缓冲区溢出实验Buffer Bomb,重温了栈溢出的原理. 题目提供了一个有漏洞溢出的程序bufbomb,包括五个Level,在每个Level中要求返回指定的函数.修改全局变量.执行Shellcode等,难度逐渐递增.为保证实验者作业的唯一性,实验提供了程序makecookie,生成指定用户名的cookie,在实验中将会用到这个cookie值.在我的机器上, [email protect

缓冲区溢出攻击

缓冲区溢出(Buffer Overflow)是计算机安全领域内既经典而又古老的话题.随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来.其中看雪的<0day安全:软件漏洞分析技术>一书将缓冲区溢出攻击的原理阐述得简洁明了.本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证.不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如MS的Visual Stu

缓冲区溢出防护措施(MS)

0x01 /GS --缓冲区安全性检查 如果使用/GS进行编译,将在程序中插入代码,以检测可能覆盖函数返回地址的缓冲区溢出.如果发生了缓冲区溢出,系统将向用户显示一个警告对话框,然后终止程序.这样,攻击者将无法控制应用程序.用户也可以编写自定义的错误处理例程,以代替默认对话框来处理错误. 在返回地址之前将插入一个专门的 cookie(系列字节),以使得任何缓冲区溢出都将更改该cookie.在函数返回之前,将测试cookie的值.如果cookie值已被更改,将会调用处理程序.服务器或服务可能会要求

【软件安全】汇编语言超浓缩教程&缓冲区溢出攻击——1

对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,妨碍我们学习汇编的兴趣,不少人就此放弃.我个人的看法是学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感 " 哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来."此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛.)别急,别

SEED缓冲区溢出实验笔记

缓冲区溢出实验(Linux 32位) 参考教程与材料:http://www.cis.syr.edu/~wedu/seed/Labs_12.04/Software/Buffer_Overflow/ (本文记录了做SEED缓冲区溢出实验的体会与问题,侧重实践,而不是讲解缓冲区溢出原理的详细教程) 1. 准备工作 使用SEED ubuntu虚拟机进行缓冲区溢出实验,首先要关闭一些针对此攻击的防御机制来简化实验. (1)内存地址随机化(Address Space Randomization):基于Lin