缓冲区溢出攻击实验(另附源代码)
2016-06-23 19:27
190 查看
缓冲区溢出攻击代码如下:
正常执行不会执行到f1()函数,但是由于输入的字符大于缓冲区的长度,而我们特意设置一段输入字符的地址字符正好覆盖了返回地址,则本函数调用完之后,就会返回到我们设置的地址,执行我们设置的shellcode攻击代码,但是本实例只是演示一下缓冲区溢出的情况,没有做攻击,则用在屏幕上打印出shellcode攻击代码为攻击行为。
#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攻击代码为攻击行为。
相关文章推荐
- php Jsonp 跨域 请求
- Java 4000 正则表达式
- C语言课程设计 问题 G: 整数连接
- 题目(或游戏)流程控制器上传到GitHub
- 第二次作业150206226
- c++学习心得
- Java I/O : 概述
- 运算符重载(二)
- python列表
- php正则匹配动态页面文章标题<h1>
- [Q学习]14 Qt状态机框架——进入和退出状态3
- JSON详细学习之JackSon in JAVA
- [Q学习]14 Qt状态机框架——进入和退出状态2
- [Qt学习]14 Qt状态机框架——进入和退出状态
- mybatis 中#与$的区别
- eclipse中后缀为.vm的静态文件设置js智能提示
- Python 小练习 倒序输出
- C语言的指针、链表的原理和各类操作
- 在php获取访问方的ip
- 酒店入住管理系统