F's Blog

博客 收藏夹
栈溢出

24 Oct 2016

栈在数据结构里是一种先进先出的结果,将这种数据结果应用到操作系统上,就有了操作系统最重要的系统栈。

系统栈管理着程序的调用情况,由每个函数的栈帧组成。每一个栈帧包括:

在 CPU 内部,与系统栈相关的主要寄存器:

所谓栈溢出,填充局部变量数据是按照其从低到高的是顺序,所以如果分配了10个byte,而进来12个,那么多的两个就会覆盖高位的已有数据,而不是新的内存空间。而这个已有数据可能就是存的函数的返回地址,覆盖重写成想要跳转的函数地址就完成了一次利用。

shellcode

shellcode 是指广义上植入进程的代码,而不仅仅是获得 shell。exploit 是针对特定漏洞所要进程的操作,即漏洞利用,从而最终能让 shellcode 执行。

参考

本文由 付豪 创作,采用署名 4.0 国际(CC BY 4.0)创作共享协议进行许可,详细声明