【结束】[第一阶段◇第四题]看雪论坛.腾讯公司2008软件安全技术竞赛
本次比赛规则及奖品请参看此帖:http://bbs.pediy.com/showthread.php?t=73422

致谢
 
非常感谢zmworm提供的精彩题目,受益匪浅。


第一阶段比赛说明
 
本阶段共四道题目,每题计分每题的计分方法,将在题目放出时公布。(各题的分数将算入最后的总数,在决定最终名次时,每一题都很重要)。四道题不是同时给出,在第一题结束后,再放出第二题,以此类推。但无论答题正确与否,都有资格参与下一题的回答。若题目答错或未答,该题均计0分。


第一阶段第四题

Windows API StretchDIBits 的代码中存在一个BUG(已测试xp sp2和xp sp3),通过利用这个BUG,我们可以精心构筑一个PE文件,当我们使用Explorer.exe 查看含有这个文件的文件夹时,可以让Exploer.exe发生崩溃。

StretchDIBits的函数原型:
WINGDIAPI BOOL WINAPI StretchDIBits(
  HDC hdc,
  int XDest,
  int YDest,
  int nDestWidth,
  int nDestHeight,
  int XSrc,
  int YSrc,
  int nSrcWidth,
  int nSrcHeight,
  CONST VOID* lpBits,
  CONST BITMAPINFO* lpBitsInfo,
  UINT iUsage,
  DWORD dwRop
);

答题要求
 
1. 尝试找到这个函数的BUG.
2. 利用这个BUG构造上述所描述的那个PE文件.
3. 将分析文档和相关测试源代码一起上传,同时描述一下分析过程。
4. 上传方式:将分析文档和相关测试源代码打包后,一起上传到“看雪论坛.腾讯公司2008软件安全竞赛答案提交区”。


其他注意事项

1.比赛答题期间,不得在论坛或群等公开场所讨论。
2.比赛答题期间,不得泄露测试程序任何相关技术细节。
3.违反第1,2条,取消相关人员比赛资格

 
提交机会:此题每个选手有多次提交附件的机会.但从第二次提交附件起,每提交一次分数减5分做为惩罚,详见计分公式.以最后一次提交结果为最终计分结果,之前的提交不进行计分.

计分公式

参数说明:
做题时间:是指从2008-10-11 12:00开始到该次附件提交的时间的总共分钟数。
K:
  如果提交的答案只能描述这个函数的可以利用的BUG并且给出详细跟踪分析过程,k的值取0.3
  如果提交的答案除了上述结果外,利用这个BUG构造出上述所描述的PE文件并给出详细分析文档,k的值取1

答题时间:2008-10-11 12:00 至 2008-10-14 12:00止.

通过标准
分两种情况,满足下面两条中任一条视为通过,但是公式中k的值不一样。
1.提交的答案只能描述这个函数的可以利用的BUG并且给出详细跟踪分析过程,k = 0.3。
2.提交的答案除了上述结果外,利用这个BUG构造出上述所描述的PE文件并给出详细分析文档,k = 1。

附加标准:
3.这个BUG是否有其他的的应用方法,找到除构造PE的攻击实例有加分(最多10分)(比如如果没有找到PE利用文件,只找到其他利用文件,k = 0.3,另外也只能最多加10分)
4.这个函数是否有其他的BUG,找到两个以上BUG的位置有加分,要用文章说明BUG的原因,并构造攻击实例. (最多10分)(如果只找到多个bug,k 仍然= 0.3,另外也只能最多加10分)

注意
1.以最后一次提交结果为最终计分结果,之前的提交不进行计分;
2.规则中只有符合第二个标准k = 1,其他的均k = 0.3。
3.附加标准提交加分不计入提交次数,仅作为附加分,也不受最高分的限制,请提交时注明为附加标准的提交。

赛事预告:休赛一天后,2008-10-15中午12点正式开始第二阶段第一题比赛。