logo资料库

有关缓冲区溢出攻击的代码.doc

第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
资料共4页,全文预览结束
在缓冲区存储范围内能够正常打印 超出存储范围不能正常运行
输入情况超出范围出现死循环不断打印“liulele” 利用缓冲区溢出攻击代码: #include #include #include void fun(char *input) { char buffer[10]; strcpy(buffer,input); printf("缓冲区字符为=%s",buffer); } void fun1() { printf("Call fun1"); while(1) { printf("liulele"); } } int main( ) { char a[100]; printf("Address of fun1=%p\n",fun1);//打印存储用于攻击的可用地址 printf("请输入相应字符:"); //scanf("%s",a);
fun("abcdefghijklmn12\x0A\x10\x40"); return 0; } 进行防御,当输入长度过长时跳出 编写代码进行防护: #include #include #include void fun(char *input) { char buffer[10]; int b; b=strlen(input); if(b<=10) { strcpy(buffer,input); printf("缓冲区字符为=%s",buffer); } else printf("字符长度过长"); } void fun1()
{ printf("Call fun1"); while(1) { printf("liulele"); } } int main( ) { char a[100]; printf("Address of fun1=%p\n",fun1);//打印存储用于攻击的可用地址 printf("请输入相应字符:"); scanf("%s",a); fun(a); return 0; }
分享到:
收藏