pwn漏洞挖掘技术之栈溢出

说点题外话,推荐一本二进制漏洞挖掘奇书:《0day安全:软件漏洞分析技术》,这本书从技术到进阶讲了与漏洞挖掘有关的知识。如果要在ctf的pwn方向或者是在网络安全方向的二进制漏洞挖掘中有所提升,这本书一定要看。下面回归正题。
栈在内存中是以什么形式存在的?首先要对内存有一定的了解。内存按功能大致可划分为代码区、数据区、堆区、栈区。其中栈区是内存中功能执行的一部分。通常来说,栈的操作有两种,压栈(PUSH)和弹栈(POP),遵循后进先出的原则(Last In First Out,简称LIFO)。要挖掘栈溢出漏洞,我们要对栈在内存中的实现细节十分了解。什么时候内存才会用到栈?程序员写一个普通程序,这个程序运行时调用函数的过程中在栈中是以栈帧的形式出现的。一般的小白在这里听得可能会一头雾水,没关系,下面听我娓娓道来。
你可以把栈想象成一摞摞盘子,不同的盘子代表不同的数据。这里有一张空桌面,把桌面表示为栈底。桌面上什么都没有,我们这时放入一个个盘子,叠成一摞,相当于压栈(PUSH)操作,把数据存入栈中。你也可以从桌面上拿出盘子,相当于在函数执行结束时,栈会执行弹栈(POP)操作。很容易想象,盘子的放置与拿出也满足后进先出(Last In First Out,简称LIFO)原则。但是你可能会问?栈跟函数调用有什么关系?没关系,下面继续讲解。
我们以一个程序作为例子。

#include<stdio.h>
void function(int a,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶叶扁舟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值