![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
栈基础
大佬菜菜带带
这个作者很懒,什么都没留下…
展开
-
CTF-PWN栈迁移
栈帧介绍 C语言函数调用栈帧_大佬菜菜带带的博客-CSDN博客 栈迁移背景 在栈溢出构造rop链时,有时我们会遇到构造空间不够的情况。比如我们需要构造0x30字节的数据,而read()只能读入0x28字节。但是我们可以控制ebp及ret的值,此时可以利用栈迁移的方法拓展栈空间。 栈迁移条件 能够控制rbp及ret的值。 拥有一块可执行的内存,并且可以连续两次控制该内存。 栈迁移原理 在函数调用完返回时,会执行leave,ret两条汇编指令。 leave: mov esp ebp; pop原创 2022-04-05 16:28:05 · 837 阅读 · 0 评论 -
C语言函数调用栈帧
寄存器 esp:记录栈顶位置,即指向栈顶的指针 ebp:记录栈底位置,即指向栈底的指针 eip:指向程序当前运行位置的指针 栈帧运作过程 我们以main函数调用fun函数为例 1.eip压栈,保存当前main函数执行位置 2.ebp压栈,保存main函数栈帧的栈底 3.准备工作已经做完,开始调用fun函数。 4.将esp的值赋给ebp,作为fun函数的栈底 5.esp值减少0x18,为fun函数开辟0x18大小的栈空间(小端存储中栈逆向生长) 6.fun函数调用完成,开始返回main函原创 2022-04-05 14:52:28 · 1441 阅读 · 0 评论