好友
阅读权限40
听众
最后登录1970-1-1
|
一
天朝六十一年四月二十六日,就是第三届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中...
|
免费评分
-
查看全部评分
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|