栈基础
大佬菜菜带带
这个作者很懒,什么都没留下…
展开
-
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 · 889 阅读 · 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 · 1489 阅读 · 0 评论