【发布时间】:2021-06-11 04:32:35
【问题描述】:
是否可以通过将堆栈链接在一起来进行缓冲区溢出(假设没有现代堆栈防御,如金丝雀、aslr、不可执行堆栈等)?我试着在下面画一张图来说明我的意思:
(已编辑;低地址)
缓冲区 A + ebp(8 字节)
返回地址A
随机内存(假设 40 字节)
缓冲区 B + ebp(40 字节)
返回地址B
(高地址)
我可以制作如下所示的有效载荷吗?
'A' * 8 + 缓冲区 B 开头的十六进制值 + '\x90' * 50 + shellcode(假设 20 个字节)
这个想法是我返回到包含 nop sled 和 shellcode 的堆栈的一部分。
如果我可以执行上面的有效负载,那么作为后续,如果我放入随机内存而不是缓冲区 B 会怎样? nop 雪橇会带我到我的 shellcode 吗?谢谢!!!
【问题讨论】:
-
返回地址不能在开头,那不是保存的返回地址在栈中的位置。我不明白您在这里所说的“链接”是什么;这听起来就像通常覆盖返回地址以返回到您的漏洞利用有效负载附近的某个地方,而 nop 雪橇覆盖了该区域。如果你知道缓冲区的近似绝对地址,你就知道返回地址指向哪里,希望能在非雪橇内命中。
-
或者你的图表是颠倒的,顶部的地址较低?
-
我应该说清楚的;低地址在栈顶,高地址在栈底。
标签: assembly binary buffer buffer-overflow exploit