- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我试图了解如果使用金丝雀,返回到 libc 和面向返回的编程漏洞是否/如何可能。
金丝雀将被放置在堆栈上的返回值和要溢出的缓冲区之间,并且需要被覆盖才能将返回值更改为库函数或计算的位置。 Canary 自 1997 年 (StackGuard) 以来就已出现,而 ROP 是 2007 年首次引入的技术 (Shacham)。
金丝雀会使这些类型的攻击变得不可能吗?
最佳答案
Does a canary make these types of attacks impossible?
不,事实并非如此。它使得执行 return-to-libc 或 ROP 变得更加困难,但它绝对不是对抗此类攻击的 Elixir 。
首先,堆栈金丝雀只能防止由于缓冲区溢出而导致返回地址崩溃。但还有其他方法可以破坏内存:indirect pointer overwrite或format string vulnerabilities仅举两个例子。
其次,可以通过用原始值覆盖堆栈金丝雀来绕过它们。我并不是说这在现代实现中很容易,但它肯定不是不可能。
第三,虽然这些攻击被称为返回-to-libc和返回面向编程,但谁说我们需要返回指令来执行这些攻击?这些攻击可以通过破坏处理器将从中加载和跳转到的任何内存位置来发起。最常见的例子是函数指针。但我们也可以覆盖 GOT或longjmp
缓冲区。 (顺便说一句,已经证明可以执行 ROP without using any return instructions!)
第四个原因不是堆栈金丝雀本身的弱点,而是大多数实现之一。堆栈金丝雀通常只放置在具有基于堆栈的字符缓冲区且大小至少为 8 的函数中。因此,这些实现不会检测其他缓冲区中的溢出。 This exploit在整数数组中使用了溢出,因此堆栈金丝雀无法检测到它。
关于security - 金丝雀是否可以防止返回到 libc 和面向返回的编程攻击?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5568538/
到目前为止,我已经生成了以下代码来尝试将相关数据整合在一起。 但是,使用“+ 7”函数会产生以下问题。 Registration date = '2018-01-01' 它正在推迟 2018-04-0
我已经成功地将我的自定义购物车发布到 PayPal——它处理订单非常漂亮,当收到付款时,它会将数据发回我在配置中指定的 URL。代码基于此处找到的库:http://www.phpfour.com/bl
我是一名优秀的程序员,十分优秀!