函数调用栈:程序运行时内存一段连续的区域,用来保存函数运行时的状态信息,包括函数参数与局部变量
函数状态主要涉及的三个寄存器:
函数调用时,栈顶函数状态以及上述寄存器的变化:
变化的核心任务是将调用函数(caller)的状态保存起来,同时创建被调用函数(callee)的状态。
四项技术:
payload:padding1 + address of shellcode + padding2 + shellcode
ALSR:操作系统可以将函数调用栈的起始地址设为随机化
payload:padding1 + address of system() + padding2 + address of “/bin/sh”