3

以下代码的一个版本出现在这个关于堆喷射的演示文稿中(这个链接会导致一个 powerpoint 下载),以及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),还是某些 shell 代码shellcode内存位置?

oneblockNOP 幻灯片吗?

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


PS不是作业;我只是 javascript 的菜鸟。

4

1 回答 1

1

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

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

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

这是一种相当粗略且不准确的描述事物的方式,但它使基础知识得以传达。

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

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

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

在涉及相当仔细的知识

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

[*] 是的,我们正在努力改变这一点,让计算机受到更多保护

于 2013-01-29T00:18:16.950 回答