漏洞学习【1】- 缓冲区溢出导致的危险
2012-03-07 15:46
190 查看
开始着手漏洞学习,发现了一个自己常犯的危险行为,用strcpy函数去拷贝没有先验证。
看如下代码:
我们会发现,如果是一般的合法运行,程序应该是没有什么问题的。但是用户不是程序员,不会考虑那么多。如果输入字符串多余7个,那么会出现什么现象呢?sayHello函数中buffer的长度只有8。但是输入比如说10个字符,则合格时候,栈的结构就要被破坏了。既是retn的地址,就不是正确的了。而且,还有可能是危险数据。攻击者可以将精选准备的数据插入到里面,然后sayHello之后,程序就给攻击者控制了。至于具体的数据,我还得继续学习学习,堆栈结构还有些困惑,有待继续学习。
看如下代码:
#include <stdio.h> #include <string.h> void sayHello(char * str) { char buffer[8]; strcpy(buffer, str); printf("Hello %s\n", buffer); } int main(int argc, char** argv) { char inputBuffer[100]; scanf("%s", &inputBuffer); sayHello(inputBuffer); return 0; }
我们会发现,如果是一般的合法运行,程序应该是没有什么问题的。但是用户不是程序员,不会考虑那么多。如果输入字符串多余7个,那么会出现什么现象呢?sayHello函数中buffer的长度只有8。但是输入比如说10个字符,则合格时候,栈的结构就要被破坏了。既是retn的地址,就不是正确的了。而且,还有可能是危险数据。攻击者可以将精选准备的数据插入到里面,然后sayHello之后,程序就给攻击者控制了。至于具体的数据,我还得继续学习学习,堆栈结构还有些困惑,有待继续学习。
相关文章推荐
- [典型漏洞分享]一个典型的软件漏洞--memcpy导致的缓冲区溢出
- 驱动学习----内存管理漏洞利用之--Ring3下Kill微点
- PHP反序列化漏洞学习
- 动网论坛(DVBBS)Show.asp页面过滤不严导致跨站漏洞
- CVE 2013-3897 - UAF 漏洞分析学习学习
- 【安全牛学习笔记】答疑(Conky、Goagent、Linux4.4内核发布),手动漏洞挖掘
- ASP.NET 学习笔记_04 Session、http、web开发原则、xss漏洞
- 黑马程序员--SQL注册漏洞 学习日志
- 正则表达式preg_replace中危险的/e修饰符带来的安全漏洞问题
- Java新漏洞 可能导致Windows用户受到攻击 [转]
- python3基础学习(http host头攻击漏洞POC)
- APP安全漏洞学习笔记
- [典型漏洞分享]横向越权漏洞导致用户隐私信息泄漏【高】
- nginx 配置不当导致目录遍历下载漏洞
- Redis漏洞导致服务器被植入恶意程序gg3lady无法删除
- 缓冲区溢出分析第07课:MS06-040漏洞研究——静态分析
- RPO漏洞学习
- Jboss漏洞导致linux服务器中毒解决办法
- nginx php有关cgi.fix_pathinfo导致文件类型错误解析漏洞
- 如何学习挖掘漏洞[参考多方面资料]