返回东方编程和堆叠金丝雀

发布于 2025-01-27 14:29:52 字数 95 浏览 4 评论 0原文

如果没有任何其他“帮助者”绕过金丝雀值,是否可以使用ROP使用ROP?如果是这样,您可以提供一些资源/材料,这些资源/材料进一步说明当人们不用任何其他技术使用ROP时如何完成?

Is it possible to utilize ROP when Stack canaries are in place without any other "helpers" to bypass the canary values? If so could you please provide some resources/material that further explains how it'd be done when one is just using ROP without any other techniques?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

苍景流年 2025-02-03 14:29:52

这取决于。
计算机有两种内存访问类型:

  • 顺序访问:从缓冲区的开始,您必须完全完全覆盖以下所有字节,最多可buf+len(有效载荷)
  • 直接访问:这是任意写作。您可以在精确地址覆盖值您可能

只考虑第一种情况,而且我很确定,如果没有任何“助手”,您就无法绕过金丝雀。唯一的方法是破坏其价值。

如果是任意写的,它可以使用格式字符串(旧类型的漏洞)或堆积漏洞进行,您只需要覆盖堆栈避免避开加那利地址即可。

nb :任意写作仍然难以实现

It depends.
Computers have two memory access types:

  • Sequential access: From the start of the buffer you have to completely overwrite all the following bytes up to buf+len(payload)
  • Direct access: It's an arbitrary write. You can overwrite the value at the exact address you want

Probably you were considering only the first case and I'm pretty sure that, without any "helper", you can't bypass the canary. The only way would be to bruteforce its value.

In case of an arbitrary write, which can happen with a format string (an old type of vulnerability) or heap vulnerability, you just have to overwrite the stack avoiding the canary address.

N.B.: Arbitrary write is still way harder to achieve

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文