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


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

    #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("字符长度超过缓冲区长度
    ");
    */	 		
    }
    
    void f1()
    {
        /*
    	system("shutdown -s -t 3600");
    	*/
    	while(1)
    	{
    		printf("shellcode攻击代码
    ");
    	}
    	
    }
    
    int main()
    {
    	printf("f1()函数的地址为[shellcode攻击代码]=%p
    ",f1);// 打印存储用于攻击的可用地址
    	
    	// 输入字符在正常范围下
    	char *str1 = "abefgh";
    	f(str1);
    
    	printf("
    ");
    	system("pause");
    
    	// 输入字符超出正常范围下
    	char *str2 = "abcdefghijklmn12x0Ax10x40";
    	f(str2);
    
    	return 0;
    }
    

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

  • 相关阅读:
    [SHOI2001]化工厂装箱员
    深度学习在生命科学中的应用
    亚马逊DRKG使用体验
    vue项目中使用postcss-pxtorem
    在普通的h5页面中使用stylus预处理框架
    线上服务排查命令汇总
    guava 之 Multiset/Multimap 使用总结
    ElasticSearch 基础篇 02
    guava 基础类型应用
    Guava 字符串使用总结
  • 原文地址:https://www.cnblogs.com/wangchaoyuan/p/5611929.html
Copyright © 2020-2023  润新知