原文链接:https://xz.aliyun.com/t/4009 1.0 DWORD SHOOT是什么捏? DWORD SHOOT指能够向内存任意位置写入任意数据,1个WORD=4个bytes,即可以通过执行程序将4bytes的数据写入4bytes地址中,从而实现某种恶意操作.是不是还不清晰咩?emmm,通过下面这个完整的堆溢出利用例子进行理解,这个例子通过修改PEB中的同步函数指针指向达到利用的目的.PC:win2000工具:vc6.0,ollydbg 1.1 PEB的线程同步函数与DWOR…
Linux堆溢出漏洞利用之unlink 作者:走位@阿里聚安全 0 前言 之前我们深入了解了glibc malloc的运行机制(文章链接请看文末▼),下面就让我们开始真正的堆溢出漏洞利用学习吧.说实话,写这类文章,我是比较怂的,因为我当前从事的工作跟漏洞挖掘完全无关,学习这部分知识也纯粹是个人爱好,于周末无聊时打发下时间,甚至我最初的目标也仅仅是能快速看懂.复现各种漏洞利用POC而已…鉴于此,后续的文章大致会由两种内容构成:1)各种相关文章的总结,再提炼:2)某些好文章的翻译及拓展.本文两者皆有…
微软在堆中也增加了一些安全校验操作,使得原本是不容易的堆溢出变得困难重重: * PEB Random:在 Windows XP SP2 之后,微软不再使用固定的 PEB 基址 0x7FFDF000,而是使用具有一定随机性的基址,从而影响了 DWORD SHOOT 对 PEB 中函数的攻击. * Safe Unlink:微软改写了操作双向链表的代码,在卸载 free list 中的堆块时更加小心.SP2 在进行删除操作时,提前验证堆块的完整性,以防止 DWORD SHOOT: int safe_r…
堆溢出与堆的内存布局有关,要搞明白堆溢出,首先要清楚的是malloc()分配的堆内存布局是什么样子,free()操作后又变成什么样子. 解决第一个问题:通过malloc()分配的堆内存,如何布局? 上图就是malloc()分配两块内存的情形. 其中mem指针指向的是malloc()返回的地址,pre_size与size都是4字节数据,size存放当前chunk(内存块,本文均不翻译)大小,pre_size存放上一个chunk大小. 因为malloc实现分配的内存空间是8字节对齐的,所以size的…
相关文章我拍成了照片,放在了我的QQ空间不是做广告(一张一张的传太麻烦了)http://user.qzone.qq.com/252738331/photo/V10U5YUk2v0ol6/    密码9EY3TI 这个相册的图片是0day2中的第五章 有关堆溢出的利用文章 一直想把这节尽快做完实验,由于工作和生活琐事耽误了.这个实验是p171的狙击PEB中的RtlEnterCritical-Section()函数指针.(这个实验我没做成功!就是没有msg下,但是还是有经验收获的) 首先获取PEB中…
好久没有发帖子啦!最近一直很忙!但是还是抽空学习啦下! 前段时间匆匆忙忙的把0day2上的堆溢出实验做啦! 可能当时太浮躁啦,很多细节没注意!结果:实验结果很不满意!所以就有啦这一篇!! 上一篇是发布在cnblogs.com的.后来管理提醒我,我们不讨论这种技术!旧书重温:0day2[7]堆溢出实验(很失败的一篇) 所以来 F4ck 发布吧! 0day2第五篇 堆溢出利用! 这章节,我细读啦不下3遍! 但是还是感觉有些生疏,所以要想把这个实验做好!一定要把此章节搞明白! 文章开始 0x01. 0…
最近认真学习了下linux下堆的管理及堆溢出利用,做下笔记:作者作为初学者,如果有什么写的不对的地方而您又碰巧看到,欢迎指正. 本文用到的例子下载链接https://github.com/ctfs/write-ups-2014/tree/master/hitcon-ctf-2014/stkof 首先总结一下linux下堆的分配管理.堆的基本结构见上一篇文章,这里不再赘述. 一个更详细总结的传送门 glibc内存管理ptmalloc源码分析 1.堆区是在进程加载时的一片区域,mmap方式分配的堆结…
1. 介绍 2017年3月,长亭安全研究实验室(Chaitin Security Research Lab)参加了 Pwn2Own 黑客大赛,我作为团队的一员,一直专注于 VMware Workstation Pro 的破解,并成功在赛前完成了一个虚拟机逃逸的漏洞利用.(很不)幸运的是,就在 Pwn2Own 比赛的前一天(3月14日),VMware 发布了一个新的版本,其中修复了我们所利用的漏洞.在本文中,我会介绍我们从发现漏洞到完成利用的整个过程.感谢@kelwin 在实现漏洞利用过程中给予的…
转:https://zhuanlan.zhihu.com/p/27733895?utm_source=tuicool&utm_medium=referral 小结: vmware通过Backdoor实现了虚拟机和宿主机的通信.vmware有一个开源项目open-vm-tools,里面包含了具体实现方式. 远程过程调用接口RPCI(Remote Procedure Call Interface,实现虚拟机向主机发送命令执行)是基于Backdoor机制实现,其在version3和4的DND/CP中均…
源于0day安全一书 1.堆的分配原理 申请堆空间   HANDLE address =  HeapCreate(0,0x1000,0x10000) address就是堆的地址 在address+0x178 偏移处,是空表(用于管理堆的申请释放,里面都是空闲的堆) 空表的结构(书上的): 解释一下:free是一个指针数组(数组里面全是指针,可以理解为 Node * 类型的指针,其实就是前后堆的地址) 指针类型是自定义的数据结构  ,大概像这样: stuct Node { Node * flink…