2018-5-2 缓冲区溢出攻击实验

2018-5-2 缓冲区溢出攻击实验

实验环境:实验楼自带的linux虚拟系统

1.sudo apt-get update

更新linux,主要是下载C的编译器

2.进入linux操作环境并使用bash

3.关闭系统地址的随机分配,立于之后寻址找到有漏洞的缓冲区。

此外,为了进一步防范缓冲区溢出攻击及其它利用shell程序的攻击,许多shell程序在被调用时自动放弃它们的特权。因此,即使你能欺骗一个Set-UID程序调用一个shell,也不能在这个shell中保持root权限,这个防护措施在/bin/bash中实现。

linux系统中,/bin/sh实际是指向/bin/bash或/bin/dash的一个符号链接。为了重现这一防护措施被实现之前的情形,我们使用另一个shell程序(zsh)代替/bin/bash。下面的指令描述了如何设置zsh程序:

4.写shellcode

这里已经给出了,所以直接copy一下就行。

5.输入漏洞代码

6.编译

GCC编译器有一种栈保护机制来阻止缓冲区溢出,所以我们在编译代码时需要用 –fno-stack-protector 关闭这种机制。

而 -z execstack 用于允许执行栈。

7.获得缓冲区地址

根据语句 strcpy(buffer+100,shellcode); 我们计算shellcode的地址为 0xffffd350(十六进制)+100(十进制)=0xffffd3b4(十六进制)

现在修改exploit.c文件!将 \x??\x??\x??\x?? 修改为 \xb4\xd2\xff\xff

然后,编译exploit.c程序:

8.获得ROOT权限

原文地址:https://www.cnblogs.com/nalanruntu/p/8979816.html

时间: 2024-11-08 21:55:20

2018-5-2 缓冲区溢出攻击实验的相关文章

CSAPP缓冲区溢出攻击实验(下)

CSAPP缓冲区溢出攻击实验(下) 3.3 Level 2: 爆竹 实验要求 这一个Level的难度陡然提升,我们要让getbuf()返回到bang()而非test(),并且在执行bang()之前将global_value的值修改为cookie.因为全局变量与代码不在一个段中,所以我们不能让缓冲区一直溢出到.bss段(因为global_value初始化为0,所以它会被放在.bss而非.data段以节省空间)覆盖global_value的值.若修改了.bss和.text之间某些只读的段会引起操作系

CSAPP缓冲区溢出攻击实验(上)

CSAPP缓冲区溢出攻击实验(上) 下载实验工具.最新的讲义在这. 网上能找到的实验材料有些旧了,有的地方跟最新的handout对不上.只是没有关系,大体上仅仅是程序名(sendstring)或者參数名(bufbomb -t)的差异,不影响我们的实验. 1.实验工具 1.1 makecookie 后面实验中,五次"攻击"中有四次都是使你的cookie出如今它原本不存在的位置,所以我们首先要为自己产生一个cookie. 实验工具中的makecookie就是生成cookie用的.參数是你的

缓冲区溢出攻击实验(另附源代码)

缓冲区溢出攻击代码如下: #include<Windows.h> #include<stdio.h> #include<string.h> void f(char *input) { char buffer[10]; strcpy(buffer,input); printf("缓冲区字符为=%s",buffer); /* // 进行防御,当输入长度过长时跳出 char buffer[10]; int b; b=strlen(input); if(b&

实验一——缓冲区溢出漏洞实验

Linux实验一 —— 缓冲区溢出漏洞实验 20122137 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 系统用户名shiyanlou,密码shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.

缓冲区溢出漏洞实验

一.实验过程及截图 输入命令安装一些用于编译32位C程序的东西: 进入32位linux环境.此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash.使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键. 把以下代码保存为“stack.c”文件,保存到 /tmp 目录下. 把以下代码保存为“exploit.c”文件,保存到 /tmp 目录下. 结果: 上面的代码

实验一缓冲区溢出漏洞实验

一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写 二.实验准备 系统用户名shiyanlou,密码shiyanlou 实验楼提供的是64位Ubuntu linux,而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的东西: sudo apt-

缓冲区溢出漏洞实验 20125114 余硕

一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况,这一漏洞可以被 恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现时由于缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 练习1: 3.1初始设置 3.2  shellcode 一般情况下,缓冲区溢出会造成程序崩溃,在程序中,溢出的数据覆盖了返回地址.而如果覆盖返回地址的数据是另一个地址,那么程序就会跳转到该地址,如果该地址存放的是一段精心设计的代码用于实现其他功能,这段代码就是

实验一:缓冲区溢出漏洞实验20115116黄婧

缓冲区溢出攻击:通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的. 一.实验要求 1.为了监控实验进程,我们采用私有课程方式,进入实验楼课程,单击加入私有课程,输入邀请码2YTE6J9X,个人信息中输入学号+姓名; 2.实验报告在博客园 发Blog公开,重点是实验过程中的运行结果(要有截图),遇到的问题.解决办法(不要是空洞的方法如“查网络”.“问同学”.“看书”等)以及分析(从中可以得到什么启示,有什么收获,教训

Linux实验——缓冲区溢出漏洞实验

一.     实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.     实验准备 实验楼提供的是64位Ubuntu linux(系统用户名shiyanlou,密码shiyanlou),而本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的东