<aside>
💡 Notion Tip: 二进制笔记.
</aside>
缓冲区溢出原理和防御
- 在一些没有进行边界检查的函数中,系统会将用户所有的输入存入缓冲区,超出的数据会覆盖掉原本栈中的内容,如果超出的数据能覆盖掉函数的返回地址,那么就可以通过输入恶意的数据指定函数返回地址,让程序跳转到攻击者想要执行的地址运行,如将返回地址跳转到攻击者插入到shellcode地址,程序就会运行shellcode
- ROP:
- 操作系统每次加载可执行文件到进程空间的位置都是无法预测的,因此栈的位置实际是不固定的,通过硬编码覆盖新返回地址的方式并不可靠。为了能准确定位shellcode的地址,需要借助一些额外的操作,其中最经典的是借助跳板的栈溢出方式