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

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

2011-6-27 11:43
1691
我最近在学习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 )
在线值:
发帖
回帖
粉丝
zhangx大牛 2011-6-27 13:49
2
0
没人顶,我自己顶。
雪    币: 40
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
nisycc 2011-6-27 13:52
3
0
顶起!我帮你顶,希望LZ重新分析一下
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangx大牛 2011-6-27 14:15
4
0
看雪原版深入浅出MS06-040(看雪网络版)  http://www.mesky.net/downs/dddehzj
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
weizehua 1 2011-6-27 15:36
5
0
可是如何制作漏洞修补程序呢?
雪    币: 51
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zhangx大牛 2011-6-27 15:51
6
0
目前只能用这些工具手工去改
雪    币: 198
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yamidie 2011-6-27 17:00
7
0
查下我的看雪!
游客
登录 | 注册 方可回帖
返回