-
-
[原创]Foxit 4.1.1缓冲区溢出漏洞分析
-
发表于:
2014-2-26 21:27
3790
-
文章转自Tracy'Blog——【Foxit 4.1.1缓冲区溢出漏洞分析】
应该是去年1月份,在家那段时间,在看雪投的简历,然后得到了一个电话面试~通过后,对方发来了一个笔试题,也就是今天要分析的这个有漏洞的程序。要求就是:
009746CC FF15 08D69F00 call dword ptr ds:[<&KERNEL32.CreateFileW>] ; kernel32.CreateFileW
004A0723 |. E8 C81A1500 call Foxit_Re.005F21F0 ; 取得标题
004A0728 |. 8B4C24 1C mov ecx,dword ptr ss:[esp+1C]
004A072C |. 85C9 test ecx,ecx
004A072E |. 74 05 je short Foxit_Re.004A0735
004A0730 |. 8B49 04 mov ecx,dword ptr ds:[ecx+4] ; 文件中赋予的标题长度为516化成十六进制为204放入ecx中
004A0733 |. EB 02 jmp short Foxit_Re.004A0737
004A0735 |> 33C9 xor ecx,ecx
004A0737 |> 85C9 test ecx,ecx
004A0739 |. 7E 13 jle short Foxit_Re.004A074E
004A073B |. 8BD1 mov edx,ecx
004A073D |> 66:8338 20 /cmp word ptr ds:[eax],20 ; 判断标题中是否含有ascii码小于32的特殊字符
004A0741 |. 73 05 |jnb short Foxit_Re.004A0748
004A0743 |. 66:C700 2000 |mov word ptr ds:[eax],20 ; 如果有,则用空格键代替
004A0748 |> 83C0 02 |add eax,2
004A074B |. 4A |dec edx
004A074C |.^ 75 EF \jnz short Foxit_Re.004A073D ; 循环判断
004A074E |> 51 push ecx
004A074F |. 8D4C24 20 lea ecx,dword ptr ss:[esp+20] ; 地址中存放标题长度
009798FF |. FF92 E0000000 |call dword ptr ds:[edx+E0] ; 对文件中标题进行处理
00979905 |. 43 |inc ebx
00979906 |> 837D FC 00 |cmp dword ptr ss:[ebp-4],0
009798FF |. FF92 E0000000 |call dword ptr ds:[edx+E0] ; 对文件中标题进行处理
00979905 |. 43 |inc ebx
00979906 |> 837D FC 00 |cmp dword ptr ss:[ebp-4],0 ;处理完成之后,ebp原本指向的地址被覆盖,而后ebp所指的地址不可读而导致出错
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!