緩沖區溢出攻擊實驗(另附源代碼)


緩沖區溢出攻擊代碼如下:

#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攻擊代碼為攻擊行為。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM