实验操作步骤 首先在实验楼实验环境下配置32位系统 我们关闭系统中的一个功能——使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址(以便猜测内存地址,实行缓冲区溢出攻击。 为了进一步防范缓冲区溢出攻击及其它利用 shell 程序的攻击,许多shell程序在被调用时自动放弃它们的特权, ...
分类:
其他好文 时间:
2018-10-14 23:07:51
阅读次数:
225
一、运行时环境简介 程序在执行期间,将在其自己的逻辑地址空间内运行,其中每个程序值都在这个空间内有一个地址。一种典型的程序空间模式如下图: 首先,运行时的数据包含数据区和代码区。图中的Text就是代码区,存储目标代码。数据区包括图中的Data、BSS、Heap和Stack。 1.(常量区)Data区 ...
分类:
其他好文 时间:
2018-10-14 20:57:00
阅读次数:
297
一、斜堆的介绍 斜堆(Skew heap)也叫自适应堆(self-adjusting heap),它是左倾堆的一个变种。和左倾堆一样,它通常也用于实现优先队列。它的合并操作的时间复杂度也是O(lg n)。 相比于左倾堆,斜堆的节点没有"零距离"这个属性。除此之外,它们斜堆的合并操作也不同。斜堆的合并 ...
分类:
其他好文 时间:
2018-10-14 16:52:31
阅读次数:
189
输入命令安装一些用于编译 32 位 C 程序的软件包: Ubuntu 和其他一些 Linux 系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能: 用另一 ...
分类:
其他好文 时间:
2018-10-14 16:42:15
阅读次数:
201
一、堆和二叉堆的介绍 堆的定义 堆(heap),这里所说的堆是数据结构中的堆,而不是内存模型中的堆。堆通常是一个可以被看做一棵树,它满足下列性质: [性质一] 堆中任意节点的值总是不大于(不小于)其子节点的值; [性质二] 堆总是一棵完全树。将任意节点不大于其子节点的堆叫做最小堆或小根堆,而将任意节 ...
分类:
其他好文 时间:
2018-10-14 16:35:57
阅读次数:
159
一、左倾堆的介绍 左倾堆(leftist tree 或 leftist heap),又被成为左偏树、左偏堆,最左堆等。它和二叉堆一样,都是优先队列实现方式。当优先队列中涉及到"对两个优先队列进行合并"的问题时,二叉堆的效率就无法令人满意了,而本文介绍的左倾堆,则可以很好地解决这类问题。 左倾堆的定义 ...
分类:
其他好文 时间:
2018-10-14 16:18:42
阅读次数:
205
20165336缓冲区溢出漏洞实验 练习一:按照实验步骤进行操作,攻击漏洞程序并获得 root 权限。 实验准备 :安装一些用于编译 32 位 C 程序的软件包。 初始设置 :关闭地址空间随机化来随机堆(heap)和栈(stack)的初始地址,为了重现这一防护措施被实现之前的情形,使用另一个 she ...
分类:
其他好文 时间:
2018-10-13 19:47:54
阅读次数:
217
Java在运行时保存了一个字符串池(String pool),这使得String成为了一个特别的类。 String类不可变性的好处 (1)只有当字符串是不可变的,字符串池才有可能实现。字符串池的实现可以在运行时节约很多heap空间,因为不同的字符串变量都指向池中的同一个字符串。但如果字符串是可变的, ...
分类:
其他好文 时间:
2018-10-12 01:15:33
阅读次数:
190
C/c++程序经过编译连接后形成的二进制映像文件,这文件包含: 栈,堆,数据段(只读数据段,已经初始化读写数据段,未初始化数据段即BBS)和代码段组成. 1.栈区(stack): 由编译器自动分配释放,存放函数的参数值,局部变量等值。其操作方式类似于数据结构中的栈。 2.堆区(heap): 堆允许程 ...
分类:
其他好文 时间:
2018-10-09 20:01:02
阅读次数:
135
一、斜堆的介绍 斜堆(Skew heap)也叫自适应堆(self-adjusting heap),它是左倾堆的一个变种。和左倾堆一样,它通常也用于实现优先队列;作为一种自适应的左倾堆,它的合并操作的时间复杂度也是O(lg n)。它与左倾堆的差别是:(01) 斜堆的节点没有"零距离"这个属性,而左倾堆 ...
分类:
其他好文 时间:
2018-10-08 23:16:16
阅读次数:
162