栈溢出

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

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

    pop数据栈顶指针地址变大

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

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

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

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

    栈溢出:

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

    char 1B

    int 4B

    EBP 4B

    EIP(返回地址) 4B

    栈溢出的利用:

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

    相关文章

      网友评论

          本文标题:栈溢出

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