0ctf_2017_babyheap 首先检查一下保护 IDA 分析好的代码如下 首先申请了一块内存地址用来存放结构体数组,地址随机。 堆题常见的几个功能。我们来看看add 这里申请内存用的是calloc 这里没有检查size,size可以为任意值。造成堆溢出。 delete函数free后指针清零 ...
分类:
其他好文 时间:
2020-05-16 21:12:21
阅读次数:
76
关于配对堆的一些小姿势: 1、配对堆是一颗多叉树。 2、包含优先队列的所有功能,可用于优化Dijkstra算法。 3、属于可并堆,因此对于集合合并维护最值的问题很实用。 4、速度快于一般的堆结构(左偏树,斜堆,随机堆……),具体时间复杂度: 合并(Merge):$O(1)$; 插入(Insert/P ...
分类:
编程语言 时间:
2018-11-21 00:17:56
阅读次数:
424
实验操作步骤 首先在实验楼实验环境下配置32位系统 我们关闭系统中的一个功能——使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址(以便猜测内存地址,实行缓冲区溢出攻击。 为了进一步防范缓冲区溢出攻击及其它利用 shell 程序的攻击,许多shell程序在被调用时自动放弃它们的特权, ...
分类:
其他好文 时间:
2018-10-14 23:07:51
阅读次数:
225
输入命令安装一些用于编译 32 位 C 程序的软件包: Ubuntu 和其他一些 Linux 系统中,使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而猜测内存地址是缓冲区溢出攻击的关键。因此本次实验中,我们使用以下命令关闭这一功能: 用另一 ...
分类:
其他好文 时间:
2018-10-14 16:42:15
阅读次数:
201
20165336缓冲区溢出漏洞实验 练习一:按照实验步骤进行操作,攻击漏洞程序并获得 root 权限。 实验准备 :安装一些用于编译 32 位 C 程序的软件包。 初始设置 :关闭地址空间随机化来随机堆(heap)和栈(stack)的初始地址,为了重现这一防护措施被实现之前的情形,使用另一个 she ...
分类:
其他好文 时间:
2018-10-13 19:47:54
阅读次数:
217
缓冲区溢出漏洞试验 一、实验准备 输入命令安装一些用于编译32位C程序的东西 输入命令“linux32”进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash 二、实验步骤 关闭使用地址空间随机化来随机堆(heap)和栈(st ...
分类:
其他好文 时间:
2018-05-13 23:13:15
阅读次数:
167
缓冲区溢出漏洞实践 由于实验楼提供的是64位操作系统,而本次实验为了方便观察汇编语句,采用32位操作系统,所以先按照要求进行一些必要的准备 先按顺序输入下面的三个命令安装32位操作系统 安装好之后就切换到32位操作系统中 Ubuntu和其他一些Linux系统中,使用地址空间随机化来随机堆(heap) ...
分类:
其他好文 时间:
2017-05-07 14:50:32
阅读次数:
280
一、实验过程及截图输入命令安装一些用于编译32位C程序的东西:进入32位linux环境。此时你会发现,命令行用起来没那么爽了,比如不能tab补全了,所以输入“/bin/bash”使用bash.使用地址空间随机化来随机堆(heap)和栈(stack)的初始地址,这使得猜测准确的内存地址变得十分困难,而...
分类:
其他好文 时间:
2015-04-23 23:09:20
阅读次数:
227
题解:
可并堆:
其实它只是个函数,而不是数据结构,它的数据结构只是“堆”?
可并的随机堆才算一个?
两个堆合并时,对比大小决定谁是父亲,然后劣的和优的 的子再递归进行比较,直到一头为空(无法也不用再比较时),能满足正常插入就可以保证二叉的性质时停止。
代码:
可并随机堆(随机挂到某子上)
#include
#include
#include
#include
#define...
分类:
其他好文 时间:
2015-03-21 11:23:41
阅读次数:
188
我们知道二叉搜索树的中序遍历是一个已经排好序的序列,知道序列我们无法确定树的形态(因为有多种)。但是,Treap如果告诉我们它的关键字以及权值,那么就可以唯一确定树的形态(Treap的O(logn)的期望时间复杂度就是依靠一个随机堆的深度不会太深)具体的,已知关键字序列:k1,k2,k3...kn和...
分类:
其他好文 时间:
2015-03-05 19:15:21
阅读次数:
171