gpt4 book ai didi

C 简单缓冲区溢出 Shellcode 位置

转载 作者:行者123 更新时间:2023-11-30 19:10:23 24 4
gpt4 key购买 nike

我试图了解缓冲区溢出的基本原理。在无数个小时的阅读中,我注意到的一件事是:

大多数情况下,漏洞利用字符串结构如下所示,其中 nops 和 shellcode 位于缓冲区溢出之前的第一部分:

[NOPS-SHELLCODE-NEWEIPADDRESS]

现在我喜欢跳出框框思考并尝试了这个,其中 shellcode 位于堆栈中新的 eipaddress 之后:

[NOPS-NEWEIPADDRESS-SHELLCODE]

我成功地以这种方式利用了我的测试漏洞,但我真的想知道为什么没有人编写或使用这种示例?这是不好的做法还是我忽略了什么?

最佳答案

我认为第二种实现缓冲区溢出的方法比第一种方法更糟糕。

我来给你解释一下。

一般来说,操作系统有一个名为 ASLR 的安全功能。 .

简而言之,每次执行时你的堆栈地址(缓冲区地址)都会不同。

所以你必须猜测缓冲区地址,这就是 NOP sled 的原因。

如果您的 NEWEIPADRESS 落在 NOP sled 或 shellcode 的第一个字节内,则您的漏洞利用成功。

但是,如果您使用第二种方式,只有当您的 NEWEIPADRESS 是 shellcode 的第一个字节时,您才会成功。

如果您借用 NOP sled,您的 NEWEIPADRESS 将被解释为汇编语言来执行。

在大多数情况下,您的 NEWEIPADRESS 将使您的漏洞利用失败,除非 NEWEIPADRESS 全部为 NOP。

关于C 简单缓冲区溢出 Shellcode 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401804/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com