-
-
[旧帖]
[原创]自己动手给MS06-040漏洞打补丁(申请邀请码)
0.00雪花
-
2011-6-27 11:43
1691
-
[旧帖] [原创]自己动手给MS06-040漏洞打补丁(申请邀请码)
0.00雪花
我最近在学习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直播授课