栈溢出

作者: 黑小柴 | 来源:发表于2018-10-29 13:16 被阅读0次

栈中压入数据栈顶指针地址变小  

pop数据栈顶指针地址变大

也就是说栈底指针地址大于栈顶地址

EIP:扩展指令指针。在调用函数时,这个指针被存储在栈中,用于后面的使用。在函数返回时,这个被存储的地址被用于决定下一个将被执行的指令的地址。

ESP:扩展栈指针。这个寄存器指向栈顶的当前位置,并允许通过使用push和pop操纵或者直接的指针操作来对栈中的内容进行添加和移除。

EBP:扩展基指针。这个寄存器在函数的执行过程中通常是保持不变的。它作为一个静态指针使用,用于指向基本栈的信息,例如,使用了偏移量的函数的数据和变量。这个指针通常指向函数使用栈底部。

栈溢出:

变量越界占用了存放EIP(拓展指令指针)(存放函数返回后,下一步指令的地址)导致寻址错误。

char 1B

int 4B

EBP 4B

EIP(返回地址) 4B

栈溢出的利用:

通过在存在栈溢出的部位植入恶意地址覆盖EIP指针的地址部分,来绕过程序的判断,跳转到成功的条件分支。

相关文章

  • 浅说iOS为什么会上栈溢出

    简介 本文介绍了如下内容 栈的概念 为什么会发生栈溢出 栈溢出的几种栗子 怎么预防和发现栈溢出。 什么是栈? 从数...

  • 栈溢出简易指南

    栈 pwn 主题: 基本栈溢出 针对缓存区溢出防护的对策 shellcode 栈溢出的最终目的是执行shellco...

  • JVM

    1、一般什么情况会发生栈溢出、堆溢出 栈溢出(StackOverflowError) 1、栈是线程私有的,他的生命...

  • Canary机制及绕过策略-格式化字符串漏洞泄露Canary

    Canary主要用于防护栈溢出攻击。我们知道,在32位系统上,对于栈溢出漏洞,攻击者通常是通过溢出栈缓冲区,覆盖栈...

  • 2019-04-06 递归函数

    栈溢出

  • 缓冲区溢出提纲

    缓冲区溢出简单的来讲分为两种 栈溢出 堆溢出 那么什么是栈什么是堆呢 在这里简单谈一下对于堆和栈的理解 : 栈: ...

  • 无题-_-

    浅谈缓冲区溢出之栈溢出<上>

  • 栈溢出

    栈中压入数据栈顶指针地址变小 pop数据栈顶指针地址变大 也就是说栈底指针地址大于栈顶地址 EIP:扩展指令指针。...

  • 栈溢出

    function runStack (n) {if (n === 0) return 100;return run...

  • 栈溢出

    调用栈是有大小的,当入栈的执行上下文超过一定数目,JavaScript 引擎就会报错,我们把这种错误叫做栈溢出。举...

网友评论

      本文标题:栈溢出

      本文链接:https://www.haomeiwen.com/subject/hkdbtqtx.html