-
-
[原创]vxasm的第1阶段第4题
-
发表于: 2008-10-14 11:24 2214
-
用IDA打开Explorer.exe,查找输入表,发现并没有StretchDIBits函数;
用IDA打开Gdi32.dll,查看导出函数StretchDIBits,发现它被调用的图如下示:
猜测极有可以的调用流程就是:Explorer.exe -> StretchBlt -> IcmStretchBlt -> StretchDIBits;
用IDA详细分析StretchDIBits函数的流程,主要调用的函数有:_pbmiConvertInfo,_cjBitmapBitsSize,跟进cjBitmapBitsSize函数,发现如下:
可见如果 BITMAPINFOHEADER 结构中的 biCompression 成员值不等于0,3或10,则直接返回 biSizeImage 的值;那么如果能够构造一个畸形的文件,里面的biSizeImage非法的话,就有可能导致后面的读写数据错误。
以上仅仅是猜测,没有可实际利用漏洞的文件,重在参与!
用IDA打开Gdi32.dll,查看导出函数StretchDIBits,发现它被调用的图如下示:
猜测极有可以的调用流程就是:Explorer.exe -> StretchBlt -> IcmStretchBlt -> StretchDIBits;
用IDA详细分析StretchDIBits函数的流程,主要调用的函数有:_pbmiConvertInfo,_cjBitmapBitsSize,跟进cjBitmapBitsSize函数,发现如下:
可见如果 BITMAPINFOHEADER 结构中的 biCompression 成员值不等于0,3或10,则直接返回 biSizeImage 的值;那么如果能够构造一个畸形的文件,里面的biSizeImage非法的话,就有可能导致后面的读写数据错误。
以上仅仅是猜测,没有可实际利用漏洞的文件,重在参与!
赞赏
他的文章
看原图
赞赏
雪币:
留言: