为什么我看到一个填料被用于一些功用?
以下面的代码为例:
exploit = junk + eip + nops + shellcode
fill = "\x43"*(BUF_SIZE-len(exploit))
buf = exploit + fill我想缓冲区是我们可以发送给stack..our的最大字节数,所以我们添加了一个过滤器来使它更稳定?是推荐的吗?我们能不加填料吗?
发布于 2022-06-06 11:07:46
需要“填充”或更经常被称为“垃圾”的主要原因是,我们需要触发相关漏洞。
例如,假设我们有一个2048字节的堆栈分配缓冲区和一个易受攻击的gets()。我们需要向应用程序发送至少2048个字节来填充堆栈缓冲区,在这2048字节之后,我们将开始破坏程序状态(堆栈、寄存器等),这最终使我们能够控制返回地址。
正如评论中提到的,直接进入指令指针是非常罕见的,所以事实上我只能想象CTF中会出现这种情况。本质上,我们只需要用一些数据填充缓冲区,就可以触发漏洞。
https://security.stackexchange.com/questions/173645
复制相似问题