• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录

啊远

  • 博客园
  • 联系
  • 订阅
  • 管理

公告

View Post

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

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

#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攻击代码为攻击行为。

posted on 2016-06-23 19:27  啊远  阅读(2724)  评论(0)    收藏  举报

刷新页面返回顶部
 
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3