啥也会不还想学PWN

本文探讨了栈溢出的原理,指出当函数局部变量数组边界检查不足时,可能导致用户输入覆盖栈中其他数据,如返回地址。栈溢出可导致控制流劫持,是PWN(exploitation)领域的重要内容。博客通过举例说明了栈溢出过程,指出栈溢出攻击可能引发信息泄露。
摘要由CSDN通过智能技术生成

今天,学习栈溢出的原理。

我们知道,栈溢出的漏洞利用,是PWN中一个很重要的内容。

从之前的知识中我们可以知道,栈的作用主要是存储函数调用的相关信息以及函数的局部变量。这些局部变量通常为数组或者是输入的缓冲区(buf)。函数的调用信息主要指的是返回地址和栈底指针(rbp)。

在栈存储数据的时候,会发生这样一种情况:函数中的存储在栈中的局部变量的数组边界检查不严时,发生越界,造成用户输入覆盖到缓冲区之外的数据内容(例行检查检查的金丝雀就是用来检查的,具体原理。。之后再看)。如果在检查栈保护(Stack)时有 No Canary found ,可能高概率就是一道栈溢出类型的题目。

由于栈中同时存在函数调用的相关信息,栈溢出可以导致控制流的劫持。

举例说明栈溢出的过程:

在这个图中,我们看到,是main函数下有一个b程序,b程序调用了a程序,但是在a程序的中,预定的缓冲区长度为80,却向buf中read了200长度。显然超过了缓冲区预定的长度,这样,当用户输入的信息被储存到这个栈时(其实已经满了,但用户不知情),用户的信息就无法压入到这个栈中,就会被输送到其他地址,进而造成了栈溢出,信息泄露。当然,栈溢出的攻击方式不只这一种,但其攻击的原理基本不变,大概就是在目标栈不改变的情况下,用垃圾数据填充目标数据的位置,达到目标数据不在栈中的目的。

今天先到这,PWN 的路太长,我这个菜只能慢慢走了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值