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