-
-
[原创]來個CVE-2010-3951詳細版
-
发表于:
2013-8-12 03:17
4289
-
這是一個很過時的漏洞,也比較經典,作為入門是一個不錯的例子。。
根据最近崩溃点,回溯逐步跟踪,可以定位到存在问题的组件的组件为PD1SERV.DLL。
同时可以看到其中一种漏洞函数的调用关系如下:sub_32993742 ----> sub_32986A4F ----> sub_32986015 ----> sub_329863F1(漏洞函数)
下面从对PD1SERV.DLL解析文件结构进行分析(IDA Base Address = 0x32900000)
sub_32993742 ----> sub_32986A4F
.text:32986A7F call [edx+VTABLE_PTR.Seek] ; 定位文件当前读取的位置
.text:32986AD2 call dword ptr [eax+0Ch] ; 从当前位置起读取0x28 byte数据
.text:32986B43 mov eax, [edi+1Ch] ; 28 byte中最后一个dword为循环次数
.text:32986B46 mov ecx, eax
.text:32986B48 dec eax
.text:32986B49 test ecx, ecx
.text:32986B4B mov [ebp+var_1C], eax
.text:32986B4E jz loc_32986C81
.text:32986B64 call dword ptr [ecx+0Ch] ; 读取接下来的20个字节
.text:32986BAE call dword ptr [eax+14h] ; 文件操作指针返回到开始读取的位置
.text:32986BE9 call dword ptr [ecx+14h] ; 定位到下个开始读取的位置,20 bytes中最后一个dword为偏移
.text:32986C5C call sub_32986015 ; 调用sub_32986015进入下一步结构解析
.text:32986C73 mov eax, [ebp+var_1C] ; 循环次数不为0则重复20 bytes的操作
.text:32986C76 dec [ebp+var_1C]
.text:32986C79 test eax, eax
.text:32986C7B jnz loc_32986B54
.text:3298605B call dword ptr [edx+14h] ; 定位文件当前读取的位置
.text:3298609E call dword ptr [eax+0Ch] ; 读取接下来的8个字节
.text:32986112 mov eax, [eax+18h] ; 8 bytes中,后一个dword为循环次数
.text:32986115 mov ecx, eax
.text:32986117 dec eax
.text:32986118 test ecx, ecx
.text:3298611A mov [ebp+pInterface], eax
.text:3298611D jz loc_3298624F
; 下面读取的8个bytes,后一个dword为下一次文件操作的偏移,前一个dword含义未知,看下面红色文字说明
.text:32986133 call dword ptr [ecx+0Ch] ; 读取接下来的8个字节
.text:32986178 lea ebx, [eax+ecx] ; 计算下一个操作的位置
.text:329861BC call dword ptr [ecx+14h] ; 把文件指针移到下一个操作的位置
; 该函数判断该读取8个bytes中前一个dword是否空,如果为空的话,就调用漏洞函数进行下一步解析,否则的话就调用sub_32985476进行下一步解析,要触发漏洞,该值一定要为空
.text:329861EE cmp [ebp+var_38], ebx ;
.text:329861F1 jz loc_329862B8
.。。。。。。。。。。。。
.text:32986215 call sub_32985476 ; 不为空时调用该函数做下一步解析
。。。。。。。。。。。。
.text:329862BC call ProblemFunction ; 为空时调用漏洞函数做下一步解析
.text:32986243 mov eax, [ebp+pInterface] ; 循环次数不为0则重复8 bytes的操作
.text:32986246 dec [ebp+pInterface]
.text:32986249 test eax, eax
.text:3298624B jnz short loc_32986295
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)