欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

【翻译】Windows平台下的堆溢出利用技术

【翻译】Windows平台下的堆溢出利用技术

标题:Windows平台下的堆溢出利用技术

译者:riusksk(泉哥:http://riusksk.blogbus.com)
前言
在栈溢出中我们一般都是通过控制指令指针EIP,或者覆盖SEH来实现溢出利用的,而在本文即将讲到及测试所使用的利用技术中,并没有直接运用到覆盖EIP或者SEH。我们将通过覆盖一可控制的内存地址,进而实现任意的DWORD覆写。如果你对栈溢出的认识还没有达到中/高等水平,那么我建议你先集中精力去学习一下。本文所讲述的利用技术均是些年过已久的旧技术,如果你有什么新的利用技术,记得分享一下。阅读本文前你需要具备以下条件:
●  Windows XP SP1;
●  调试器(Olly Debugger, Immunity Debugger, windbg等等);
●  C/C++ 编译器(Dev C++, lcc-32, MS visual C++ 6.0);
●  脚本语言执行环境(本文使用python,你也可以使用perl);
●  大脑;
●  具备汇编和C语言知识,并懂得如何用调试器去调试它们;
●  Olly Debugger插件HideDbg,或者Immunity Debugger的!hidedebug命令插件;
●  时间。
我们在本文主要注重于基础知识,这些技术可能因有些过时而未在“现实世界”中使用,但有一点你必须记住,如果你想提高技术,就必须知晓过去,并取其所长来为己所用!
堆的定义及其在XP下的工作原理
堆是进程用于存储数据的场所,每一进程均可动态地分配和释放程序所需的堆内存,同时允许全局访问。需要指出的是,栈是向0x00000000生长的,而堆是向0xFFFFFFFF生长的。这意味着如果某进程连续两次调用HeapAllocate()函数,那么第二次调用函数返回的指针所指向的内存地址会比第一次的高,因此第一块堆溢出后将会溢出至第二块堆内存。
更多内容请参见附件………………

上传的附件 windows平台下的堆溢出利用技术.doc

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途。
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功