溢出漏洞-栈溢出漏洞与原理分析

admin 2022年8月3日23:09:12评论78 views字数 749阅读2分29秒阅读模式

01

栈溢出




如果向栈上声明的缓冲区中复制数据,但是复制到数据量又比缓冲区大的时候,就会发生栈溢出。

在栈上声明的各种变量的位置紧临函数调用程序的返回地址。若用户输入的数据未经验证就传递给strcpy这样的函数,则会导致变量值被攻击者指定的值所改写或调用函数的返回地址将被攻击者选择的地址所覆盖,打乱程序正常运行流程,转而执行恶意代码

防范栈溢出的有效方法有:禁止栈执行,从而阻止攻击者植入恶意代码;编写安全可靠的代码,始终对输入的内容进行验证;利用编译器的边界检查实现栈保护。


02

栈溢出实验分析



1、打开vc6,新建一个C++ Source File,取名为zhanyichu。

溢出漏洞-栈溢出漏洞与原理分析

2、输入以下代码,并编译。

溢出漏洞-栈溢出漏洞与原理分析


#include <iostream>#include <string>#include <cstdlib>#include <cstring>using namespace std;
void function(string str){ int x = 10; char buf[10]; strcpy(buf, str.c_str()); cout << "x = " << x << endl;}
int main(int argc, char* argv[]){ string test; cout << "Please input a string:t"; cin >> test; function(test); system("pause"); return 0;}


3、运行程序,先输入10个字符以内的字符串,得到一个x的值;

溢出漏洞-栈溢出漏洞与原理分析

4、再输入大于10个的字符串。可以看出,字符串超过了一定长度之后,会导致x的值的变化,这就是溢出的结果。

溢出漏洞-栈溢出漏洞与原理分析

5、实验完毕,关闭虚拟机和所有窗口。


如有侵权,请联系删除。

溢出漏洞-栈溢出漏洞与原理分析

扫码关注我们

查看更多精彩内容




原文始发于微信公众号(长风实验室):溢出漏洞-栈溢出漏洞与原理分析

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年8月3日23:09:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   溢出漏洞-栈溢出漏洞与原理分析https://cn-sec.com/archives/1219922.html

发表评论

匿名网友 填写信息