版本: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