版本:2.7.3.7000
工具:OllyDbg1.1
环境:win7 sp1 x86
时间:2016.12.22
一.收集信息
•1.因为是读取文件时出现的问题,所以可能用到的API函数:CreateFileA/W
•2.准备之前的利用漏洞的m3u文件
二.下断点
•1.下CreateFileA、CreateFileW函数的断点
•2.
最后我们在
CreateFileW
函数下断了下来
三.堆栈回溯
•1.找到调用地点和返回错误地点:
•2.函数开头:
•3.函数结尾:
四.找到返回地址
•1.找到返回地址的堆栈地址,下个内存写入断点
•2.找到了第一处改变返回地址的地方:
5.关键点
•找到另一处改变返回地址的地方,这次是最关键的,因为这是我们写的jmp esp的地址:
结论:
•1.溢出的原因就是写入的时候没有检查堆栈的边界,以致破坏了原来的堆栈。
•2.再者,函数开头和返回之前有都有0x8918这个数字,而且我们写的m3u也是在0x8918附近出现问题的,推断应该是作者设计的m3u文件的最大大小,但是没有做最大判断,以至于文件过大,影响了后来的操作。
•3.推荐使用安全版函数strcpy_s等等保证边界不溢出。
附原程序下载地址:
链接:http://pan.baidu.com/s/1c2Midc0 密码:z690
本文通过OllyDbg1.1在Win7 x86环境下分析了一个与文件读取相关的安全漏洞。该漏洞源于未检查堆栈边界导致的数据溢出。文章详细介绍了从设置断点、堆栈回溯到定位关键返回地址的过程,并提出了使用安全函数以避免类似问题。
422

被折叠的 条评论
为什么被折叠?



