Exploit
记录自己学习Exploit过程
Eugene800
这个作者很懒,什么都没留下…
展开
-
ubuntu下成功进行栈溢出实验的先决条件
偶尔想在ubuntu下做个栈溢出的实验,很遗憾每次在gbd下运行都会报错:Program received signal SIGSEGV, Segmentation fault.首先想到的就是gcc编译时可能对程序启用了不可执行栈机制,遂用参数关闭该机制,运行后错误依旧:gcc -fno-stack-protector -g -o execstack execstack.c多次调试运行排原创 2017-04-19 23:10:25 · 2278 阅读 · 0 评论 -
introduction to software exploits off-by-one 一字节溢出
原文链接:introduction to software exploits off-by-one 公开课Introduction to Software Exploits涵盖了简短的基于C语言的off-by-one漏洞,但由于时间关系,讲师并没有介绍如何利用漏洞。为此,我邀请你跟着我一起向编写优美的漏洞利用程序发出挑战。挑战: 你可以在课程附带的虚拟机实验目录下找到下列翻译 2017-03-15 17:15:43 · 912 阅读 · 0 评论 -
<Oday安全 12.3.1Ret2Libc实战之利用ZwSetInformationProcess>一节补充
本文补充记录我在试验关闭DEP过程遇到的问题和解决方法。 首先要说一下用OllyFindAddr插件寻找目标指令时可能会遇到的问题。诚然这个插件是个好东西,能迅速列出需要的指令流的地址,但并不是所有在列的指令地址都可以使用,挑选前需要甄别。以关闭DEP保护流程中抬高esp值"Find Pop Retn+n"为例:插件罗列了一堆备选指令地址,我挑选最后一个地址"0x7D97FE原创 2017-03-08 00:07:05 · 913 阅读 · 5 评论 -
<Oday安全 12.3.1Ret2Libc实战之利用ZwSetInformationProcess>一节注记(下)
在前一篇一节注记(上) 的末尾部分,我们遇到访问无效内存的异常,本篇将讨论如何解决这个异常并关闭DEP保护。我们已经知道引起异常的原因是向无效地址[ebp-4](0x9090908C)写入数据。要解决这个异常可能有2种思路:1.让[ebp-4]指向可读写的地址;2.修改函数LdrpCheckNxCompatibility的实现,当然,这种方法不是本篇讨论的内容,是否具有可行性也没有验证过,所以,还原创 2017-03-01 23:32:03 · 1190 阅读 · 1 评论 -
<Oday安全 12.3.1Ret2Libc实战之利用ZwSetInformationProcess>一节注记(上)
0day安全这书越到后面越难,哎...先记录一下看书过程中的注记,便于后面理解。原创 2017-02-27 23:29:09 · 924 阅读 · 0 评论 -
<Oday安全 11.6利用加载模块之外的地址绕过SafeSEH>一节注记---jmp [ebp+N] (下)
接上回,还剩几条跳转的指令还没分析到,这些指令将在本篇中完成。 先来看看call/jmp [ebp-0x4]这条指令。这是在当前函数_except_handler4栈的局部变量,因此需要查看反汇编代码:0:000> uf ntdll!ExecuteHandler2ntdll!ExecuteHandler2:7c923282 55 push ebp原创 2017-01-12 23:41:28 · 1185 阅读 · 0 评论 -
<Oday安全 11.6利用加载模块之外的地址绕过SafeSEH>一节注记---jmp [ebp+N] (上)
看到这一章我又抓狂了:作者提及从进程空间类型为Map的映射文件中寻找如下指令地址:call/jmp dword ptr[esp+0x8]call/jmp dword ptr[esp+0x14]call/jmp dword ptr[esp+0x1c]call/jmp dword ptr[esp+0x2c]call/jmp dword ptr[esp+0x44]call/jmp dwor原创 2017-01-10 22:23:48 · 1001 阅读 · 0 评论 -
<Oday安全 11.5利用未启用SafeSEH模块绕过SafeSEH>一节注记
Oday安全一书的内容越往后越深奥,不得不做些注记备忘。 书P297 插图11.5.6写道__except函数地址根据EBP-4的值得出。原创 2016-12-24 17:02:24 · 854 阅读 · 0 评论 -
The need for a POP POP RET instruction sequence
The purpose of this post is to explain the need for a POP POP RET instruction sequence. You often read or hear that exploit writers search for this instruction sequence because it is an essential part转载 2016-12-08 22:00:38 · 559 阅读 · 0 评论 -
Heap Spray原理浅析
转自:http://blog.csdn.net/magictong/article/details/7391397Heap Spray原理浅析Magictong 2012/03 摘要:本文主要介绍Heap Spray的基本原理和特点、以及防范技术。关键词:Heap Spray、溢出攻击、漏洞利用、堆溢出 Heap Spray定义基转载 2016-11-30 20:59:09 · 717 阅读 · 0 评论 -
关于 [栈溢出后jmp esp执行shellcode] 原理分析
网上关于栈溢出后用jmp esp执行shellcode的文章有很多,感觉分析的都没有戳到点,所以想结合自己调试的经历写下自己的想法。正常情况下,函数栈分布图如下:---->栈内存由低向高方向----->|------------栈变量----------|----ebp----|------返回地址------|函数形参|发生溢出后,以上栈空间的内容被覆盖,可能从上面的布局变成这样:原创 2016-11-25 15:19:09 · 6241 阅读 · 2 评论 -
栈溢出利用SEH异常处理
前面一篇blog 里提到了基于堆溢出利用SEH的方式,本文将侧重于栈溢出利用SEH异常处理。 先来看下示例代码:#include #include char shellcode[] = {"\x90\x90\x90\x90\x90\x90\xeb\x10" \ "\x90\x90\x90\x90\x90\x90\x90\xcc" \ "\x90\x90原创 2016-11-25 11:52:13 · 2216 阅读 · 2 评论 -
堆溢出(DwordShoot)利用SEH异常处理
异常处理的身影处处可见,最常见的处理方式就是当异常发生时,在异常处理模块中记录日志,便于程序员事后定位。但是,被异常处理包含的代码真的会在异常发生时让程序优雅的退出吗?在程序的世界里什么都可能发生,所以,可以说前面那个问题的答案是否定的。这正是本文的主题:利用SEH异常处理。 SEH溢出有多种方式:栈溢出和堆溢出。本文关注堆溢出后如何利用SEH。堆溢出的步骤和前文一样:从FreeList原创 2016-11-25 00:20:13 · 1717 阅读 · 0 评论 -
C++溢出对象虚函数表指针
C++一特性是通过virtual关键字实现运行时多态,虽然自己用到这个关键字的机会不多,但很多引用的第三方库会大量使用这个关键字,比如MFC...如果某个函数由virtual关键字修饰,并且通过指针方式调用,则由编译器实现运行时多态,也是本文溢出虚函数表并加以利用的前提条件。虚表的概念可以参考这篇文章:C++虚表和多态,在这篇文章里就不再过多解释了。 文章开头提到了能完成溢出利用的前提条原创 2016-10-10 22:43:48 · 1296 阅读 · 0 评论 -
C++虚表与多态
转自:http://blog.csdn.net/haoel前言 C++中 的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图转载 2016-09-30 15:44:47 · 1051 阅读 · 1 评论 -
简单演示Exploit SEH原理(未开启SafeSEH模块)
前面写了不少SEH相关文章,这里来个复杂点的栈溢出SEH。文章不重复解释SEH运行原理,但对主要步骤加以调试和注释,另外本文参考考了雪上 Exploit 编写系列教程第三篇_基于SEH的Exploit 一文。一般来说Exploit重在溢出,不过本文旨在是演示Exploit SEH的原理,因此省略溢出过程直接在栈上修改。程序源码(vc++6.0 Debug版本)如下: #include原创 2015-08-24 23:25:19 · 1360 阅读 · 0 评论 -
xp下调试堆溢出(上)--HeapAlloc分配堆块
题记:win10都开始推广了,我还在折腾xp,真low,不过总得有这个过程吧。 DWORD SHOOT的原理是利用Release版发布的程序在正常启动(非调试启动)情况下,使用Lookaside表(又称块表)管理程序中堆频繁的申请/释放操作。本文以堆溢出学习笔记和为基础,改进而来。 首先要明确Lookaside表是一个单链表原创 2016-07-06 22:04:43 · 1769 阅读 · 0 评论 -
xp下调试堆溢出(下)--利用快表
前一篇简单阐释了快表分配的原理,并在文章的结尾提到xp sp1以前的OS并不对分配出去的快表地址进行检查。本文简单演示利用这个漏洞。建议程序在win2k上以命令行运行#include #include int main(int argc,char* argv[]){ HLOCAL h1,h2,h3,h4; char* pi=NULL; HANDLE hp; char* str=原创 2016-07-07 22:27:24 · 885 阅读 · 0 评论 -
xp下堆溢出DWORD SHOOT---狙击空闲表
前面写过通过堆溢出利用快表,这次我的目标是利用空闲表。千万不要觉得这是炒作话题,利用空闲表比利用快表要复杂很多,因此希望读者不要弃篇。 行文开始前,我想对0day安全:软件漏洞的作者提到的DWORD Shoot的环境做一些补充说明:作者说实验应在w2k下完成,在xp sp3下会失败。这是因为作者DWORD SHOOT的目标是PEB!RtlEnterCriticalSection函数地址,原创 2016-08-23 09:18:42 · 1500 阅读 · 0 评论 -
DWORD Shoot利用Crt库free函数
之前写过Win32运行库的DWORD Shoot,随着windows安全性检查的升级,简单的DWORD shoot并不能达到利用程序的目的。但是这种技术就被淘汰了吗?我个人觉得并不是这样,因为DWORD shoot技术本质上是钻了链表出链时不检查内存地址合法性的漏洞,因此只要在代码中找到有链表存在的影子就有利用的可能。C Programmer一般用Crt运行库提供的库函数malloc/free原创 2016-09-16 15:50:43 · 883 阅读 · 0 评论