文件上传漏洞:栈溢出漏洞

栈溢出:

栈溢出是缓冲区溢出的一种,分配的内存空间是有限的,如果输入超长的字符串必然会导致溢出。缓冲区溢出中最危险的是堆栈溢出,因为入侵者可以利用堆栈溢出,在函数返回时改变返回程序的地址,让其跳转到任意地址,带来的危害一种是程序崩溃导致拒绝服务,另外一种就是跳转并且执行一段恶意代码比如得到系统权限。

原理:

先看一段代码:

char dest[10];
scanf("%s",dest);

这两行代码声明了一个局部变量,然后用scanf函数读入字符串,但是这个程序没有限制字符串长度的地方。如果用户输入的字符串长度大于十个字符,那么就会产生栈溢出。
而函数的局部变量是存储在栈中的,这种错误就是栈溢出。

利用:

还是刚才的那一段代码:

char dest[10];
scanf("%s",dest);

编译之后用ida打开,应该是一个普通栈应该有的结构:

 -0000000C dest            db ? ;
   -0000000b                 db ? ;
   -0000000a                 db ? ;
   -00000009                 db ? ;
   -00000008                 db ? ;
   -00000007                 db ? ;
   -00000006                 db ? ;
   -00000005                 db ? ;
   -00000004                 db ? ;
   -00000003                 db ? ;
   -00000002                 db ? ;
   -00000001                 db ? ;
   +0000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值