您的位置:首页 > 编程语言

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

2016-06-23 19:27 190 查看
缓冲区溢出攻击代码如下:

#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攻击代码为攻击行为。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: