通常我们都会看到基本的缓冲区溢出格式:-
NOPs + shellcode + return_address
我们为什么不使用,
NOPs + return_address + shellcode?
我们将返回地址指向 shellcode 的开头?
我猜这是因为如果漏洞在 main() 中,我们可能会尝试在堆栈段之外写入数据。我对吗?如果我是,这是唯一的原因吗?
哦,是的,我不是指使用 return-to-libc、ptrace 等的其他类型的攻击;我只是想知道为什么最基本的缓冲区溢出攻击以第一种方式演示,而不是无处不在。