javascript - 了解 Javascript 中堆喷射的玩具示例?

标签 javascript security

以下代码的一个版本出现在 this presentation about heap spraying 中(此链接导致下载 powerpoint),以及 this lecture video by Dan Boneh .

<SCRIPT language="text/javascript">
    shellcode = unescape("%u4343%u4343%...");
    oneblock = unescape("%u0C0C%u0C0C");
    cause-overflow(overflow-string); //overflow buf[]
</SCRIPT>

这里没有实现 cause-overflow() 函数,但我认为它只会在整个堆上写入 shellcode + nop

shellcode 实际上是exec(/bin/sh) 之类的机器代码,还是shellcode 内存位置 一些 shell 代码?

oneblock 是 NOP slide 吗?

(更一般地说,这段代码在做什么?为什么会导致堆喷射?)


附言不是家庭作业;我只是 javascript 的菜鸟。

最佳答案

(无法从 native 打开这两个链接中的任何一个。)

我从来没有在 Javascript 中玩过堆喷射——这个想法真的很可怕。

它与 shell 代码无关(因为它不在 shell 中运行),而是直接进入机器语言——CPU 的 native 代码。

这是一种相当粗糙且不准确的描述方式,但它传达了基本原理。

堆没什么特别的。它只是计算机内存。堆栈也没什么特别的,它只是计算机内存。程序空间也没什么特别的,它只是计算机内存。

通常[*],正在运行的程序保存在“程序空间”中。程序创建的大东西保存在“堆”中,程序创建的临时东西保存在“堆栈”中。 (简化——处理它。)

缓冲区溢出的想法、粉碎堆栈或喷射堆或任何最新的技巧......以某种方式用精心制作的错误数据填充计算机内存并强制计算机停止在程序空间中运行,而不是在您精心制作的不良数据中运行。

在涉及相当仔细的知识

  • 正在运行的程序
  • 它运行的系统
  • 机器语言/代码

[*] 是的,正在做出一些努力来改变这一点并使计算机受到更多保护

关于javascript - 了解 Javascript 中堆喷射的玩具示例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14573516/

相关文章:

java - 可以向 Java 小程序添加什么安全性?

ruby-on-rails - 如何保护 Rails 应用程序免受 Firesheep 攻击?

javascript - 将 SSL 添加到域时,Flex Slider 不工作

javascript - 基于字段值的 Angular 过滤

linux - 如何从源代码升级 CentOS 6.5/Linux/Unix 中的 OpenSSL?

javascript - 具有 html 和 javascript 的网站是否安全

javascript - 如何在关闭 jQuery Accordion 菜单时折叠所有子菜单

javascript - 当我从 mapstatetoprops 调用它时,Redux Selector 没有触发

javascript - 从数组元素设置 img 标签的 src 属性

javascript - 如何让外部代码 'safe' 运行?只是禁止 eval()?