首页
社区
课程
招聘
[旧帖] [原创]自己动手给MS06-040漏洞打补丁(申请邀请码) 0.00雪花
发表于: 2011-6-27 11:43 1972

[旧帖] [原创]自己动手给MS06-040漏洞打补丁(申请邀请码) 0.00雪花

2011-6-27 11:43
1972
我最近在学习MS06-040这个漏洞,该漏洞早就已经过时了,我研究它是为了学习,它的原理failwest讲解的很透彻了,我在这里演示如何patch这个漏洞。
原理:
源文件是netapi32.dll, 要获得这个文件,只要在VM上装一个windows2000 sp4的系统即可。问题函数是NetpwPathCanonicalize,它在处理宽字符串转换时存在漏洞,它的功能是将两个宽字符串用"\\"拼接,然后再拷贝到窄字符串中,在这个过程中因为串长判断有问题导致了BUG。

如何打补丁:我发现临时缓冲区长度放在了ebx中,固定为411字节,第一个输入参数在操作过程中判断了长度限制,在拼接前也检查了总长度,但使用了宽字符的长度和411比较,因此我们只要将ebx的值该为205即可,而且ebx在上下文当中只在这里有使用。

具体方法:用IDA打开有漏洞的netapi32.dll,找到要修改的行“mov     ebx, 411h”,对应的虚拟地址是7CEAAB41,再用lordPE打开netapi32.dll,查找到对应的文件地址是9F41; 再用UltraEdit打开netapi32.dll,二进制格式显示该文件,找到对应的地址,修改即可。图示如下:


图一:用IDA确定“mov     ebx, 411h”指令的虚拟地址


图二:确定在文件中的地址


图三:修改数值

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没人顶,我自己顶。
2011-6-27 13:49
0
雪    币: 40
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
顶起!我帮你顶,希望LZ重新分析一下
2011-6-27 13:52
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
看雪原版深入浅出MS06-040(看雪网络版)  fbfK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3#2W2M7$3E0&6i4K6u0W2L8X3g2@1i4K6u0r3k6r3!0%4L8Y4y4Q4x3V1k6V1k6r3c8W2K9s2A6B7
2011-6-27 14:15
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
5
可是如何制作漏洞修补程序呢?
2011-6-27 15:36
0
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
目前只能用这些工具手工去改
2011-6-27 15:51
0
雪    币: 198
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
查下我的看雪!
2011-6-27 17:00
0
游客
登录 | 注册 方可回帖
返回