首页
社区
课程
招聘
[原创]exploit me挑战赛-壹只老虎第一题结果
2007-12-29 22:35 5312

[原创]exploit me挑战赛-壹只老虎第一题结果

2007-12-29 22:35
5312
exploit me挑战赛-壹只老虎第一题结果

看雪辞旧迎新exploit me 挑战赛   A 题  答题卷

提交者看雪ID:壹只老虎
职业:(学生、程序员、安全专家、黑客技术爱好者、其他?)
还是学生哦
PE分析:
服务端绑定7777端口,进行监听客户端发送来的数据,数据接收缓冲区为512字节,多余的数据就抛弃掉了,接受完成后,调用一个函数,复制一份收到的数据到函数的临时字符串变量里面(最大长度200),然后打印这个字符串。继续接收字符串。
漏洞描述:
RECV函数接收字符串的缓冲区为512字节
但是本程序内的一个函数将这512字节复制给了一个200字节大小的缓冲区,导致栈溢出。
shellcode描述:
请注明shellcode来源:原创,修改,引用。
原创请给出开发说明
修改请给出修改说明,并注明出处,附加被引用代码
引用请给出功能描述,并注明出处,附加被引用代码

直接引用failwest的shellcode,改了一下作者,黑黑。
功能是弹一个messagebox框,标题和文本都是”壹只老虎”

我先在ntdll.dll里面找了个jmp esp
地址是: 0x7C961EED
动态定位kernel32.dll的基地址
动态获取api地址(hash方式搜索)
然后弹个框框
然后就退出了
exploit运行截图

稳定性与通用性论证
介绍自己exploit中各个关键点的解决方案,从稳定性,通用性两方面进行对exploit进行论证和评价:

关键1:分析溢出点。由于被复制到的字符串空间只有200字节,所以很好定位。上限是500字节。
关键2:jmp esp.我们得从程序用到的dll里面去找,我就跑到ntll.dll里面去搜索了一下,就找了一个,其他dll里面可能也有,没找了。
通用性+稳定性:由于api地址采用的是动态搜索,不是硬编码,所以,很稳定,很通用,kernel32的基地址也是用代码获取的,不是硬编码哈。

其他:用hash方式搜索api,节约了很多的api名称字符串空间,

溢出完了,执行完代码了,就让他消失吧,免得看见那个恶心的崩溃的框框。
创新性论证(可选)
那个shellcode是用的failwest的,我稍微改了下名字。嘿嘿!

By: 壹只老虎
2007-12-29

[培训]二进制漏洞攻防(第3期);满10人开班;模糊测试与工具使用二次开发;网络协议漏洞挖掘;Linux内核漏洞挖掘与利用;AOSP漏洞挖掘与利用;代码审计。

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回