吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 15891|回复: 36
收起左侧

[漏洞分析] 2011年 - 第三届360软件大赛题目 - 第二题非标准答案

[复制链接]
vulnbug 发表于 2011-4-27 16:28



天朝六十一年四月二十六日,就是第三届360软件大赛结束的第二天,我独在食堂外徘徊,遇见黑咪鸡君,前来问我道,“仙人可曾为比赛写了一点什么没有?”我说“没有”。他就正告我,“仙人还是写一点罢;发到吾爱,晚上我就给你介绍MM。”

这是我知道的,黑咪鸡君每天都有不同的MM陪着吃饭,陪着溜达,陪着健身,陪着踢球...。既然有MM介绍,我也就觉得有写一点东西的必要了。我的要求并不是很高,什么陪吃饭溜达踢球健身全是浮云,我只渴望有这么个MM可以"结对"编程。

可是对于已经过去的初赛, 我实在无话可说,作为一个被火影迷认为早已领了便当的第一男猪脚,为了慰籍?恶心?大家的心灵,我还是写一点东西罢。



真的猛士,敢于誓死捍卫自己的菊花。
论坛有人反映这道题让人觉得蛋疼菊紧, 做完后依旧能感觉到隐隐作痛,但是出题方还真没打算爆大家的菊花, 毕竟这只是初赛海选题目而已, 不少童鞋都是被自己搞得复杂了



扯淡省略一百万字



根据作者的解释:×&…………%¥¥%%……&()——×(×&&……%……#@%……#¥,不解释。

题目:
http://www.debugman.com/discussion/6002/%E7%AC%AC%E4%B8%89%E5%B1%8A360%E8%BD%AF%E4%BB%B6%E5%A4%A7%E8%B5%9B-%E7%AC%AC%E4%B8%80%E9%98%B6%E6%AE%B5%E9%A2%98%E7%9B%AE

围观:

(1)对数据包结构的验证:

0x00-0x0A : PASS:[5位密码](该密码的MD5值在ini文件中)
0x0F-0x17 : 必须包含"Client"字符串
0xE0      : 必须包含"0"
构造的数据包满足上面的格式即可和Server畅通的交流了

(2)漏洞挖掘

0x0F-0x17 : 写入ini文件的info1
0x18-0x400: 写入ini文件的info2
写入完成后进行的操作
Buff[MAX_PATH]
sprintf(Buff, Info1, Info2)
fp = fopen("stream.dat", "wb")
fwrite(Buff, 1024, 1, fp)
所以, 如果能够让Info1包含%s的话, 咳咳, 你懂的。

(3)漏洞利用

因为目标是要读取文件的内容,而文件被驱动保护鸟(Hook NtCreate/NtOpen),同时因为程序采用的是持久化DEP,所以溢出后堆栈是执行不鸟的,DEP也不能被禁掉,菊花台了,有木有,有木有?!

不少童鞋立马开始从Server加载的系统dll中搜索Gadget来构建ROP鸟, 搞得很累, 还有童鞋干脆直接要求出题方提供评测环境的dlls -_-

不管这些童鞋了, 继续围观, 发现Server加载了一个名为"helper.dll"的动态库, 加载的基地址是0x41411000,存在3个导出函数:
unHook : -_-!!! 跳到这里来, 驱动保护就...
Helpyou: 调用了HeapCreate/HeapAlloc/VirtualProtect , 名字取成这样啊这样
Start360Server: 除了启动服务还是启动服务????

看到这里,发现只要搞定DEP差不多就木有问题鸟,最简单就是选择VirtualProtect,
但是该函数参数包含0,sprintf遇到0就截断鸟,怎么办涅?又菊紧了,有木有,有木有?

分析发现,触发漏洞需要发生2次数据包,接受第1次写入ini, 接受第2次的时候触发,第一次写入的数据有0字符的限制,但是第2次可以无视0的限制,第2次的数据包在堆栈中又紧挨着第1次的数据包

所以,第1次只需要负责覆盖到溢出点, 同时将地址设置为
add     esp, 104h
retn
的代码片段,这样就直接跳转了木有0限制数据包中了,而这个代码片段在Start360Server就有3处,Start360Server也是有帮助的,有木有?
哈哈,直接在第2个数据包中轻松构建VirtualProtect的参数了:)

继续分析发现数据包在不符合Client验证的时候直接将数据发生回来,也就是数据包会被放到.data段的Buff[440]中发回来,那么直接将这个Buff设置为可执行,Bypass DEP后跳回这个Buff的shellcode位置,执行了,有木有!有木有!

Shellcode:
需要的API,程序自身都有,有木有?
枚举下socket句柄有木有?
重新设置ini文件有木有?
打开读取循环发送到文件尾有木有?
重新加载驱动有木有?
恢复堆栈有木有?

(4)没了
全部利用程序本身的地址,还是很通用的有木有?



呜呼,我说不出话了,漏洞利用木有标准答案,永远存在更精妙的解答,纯属交流,期待MM中...



免费评分

参与人数 2威望 +1 热心值 +1 收起 理由
linfengtai2008 + 1 写的很生动,很精彩
riusksk + 1 谢谢分享!希望有实例code出现,呵呵……

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

Hmily 发表于 2011-4-27 16:40
蛤蟆是吃着碗里的想着锅里的啊,难为我们还没吃上的...
TheCjw 发表于 2011-4-27 16:52
riusksk 发表于 2011-4-27 16:55
Niklen 发表于 2011-4-27 17:13
前来围观蛤蟆大神~~~~
坐等黑米粒介绍MM
Hmily 发表于 2011-4-27 17:16
Niklen 发表于 2011-4-27 17:13
前来围观蛤蟆大神~~~~
坐等黑米粒介绍MM

NK也来放点血吧...
wowocock 发表于 2011-4-27 17:24
说了太多的鸟语,看的吃力啊。
Niklen 发表于 2011-4-27 17:25
Hmily 发表于 2011-4-27 17:16
NK也来放点血吧...

偶太菜鸟~~木有东东可以放啊~~
system98 发表于 2011-4-27 17:36
我是来膜拜大牛的
 楼主| vulnbug 发表于 2011-4-28 09:32
Hmily 发表于 2011-4-27 16:40
蛤蟆是吃着碗里的想着锅里的啊,难为我们还没吃上的...

就写点口水话,就不用置顶了吧....MM也没给介绍
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 10:59

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表