?

免費教程_免費網賺教程_破解版軟件-寂涯網絡學習基地

當前位置: 主頁 > 系統綜合 > 系統安全 > MP3 nator漏洞挖掘

MP3 nator漏洞挖掘

時間:2011-10-28 21:23來源:未知 整理:寂涯網絡 點擊:

簡介
 
Mp3-Nator 2.0 是一款簡單的 mp3 播放器。通過對該款軟件的調試,本人發現這款播放
器存在緩沖區溢出的漏洞,測試的平臺是在 windows xp sp3(英文版)。而本文的主要目的
不是描述這款軟件的漏洞,而是分享了本人在拿到這個軟件之后挖掘這個軟件漏洞的過程并
且利用漏洞的方式。


初步測試
 
  在學習了很多播放器漏洞的文章之后,我們可以總結出:一般播放器的緩沖區漏洞都發
生在對播放列表的解析上。所以我們首先加載歌曲 music1 和music2,通過保存一個正常的播
放器列表,將生成的 normal.plf用 winhex 來查看在正常情況下的播放器列表結構。

 

 

從上圖我們可以得出:歌曲文件路徑使用“0D 0A”(回車換行)這樣的字符進行分割
的,那么我們可以設想,如果我們構造一個文件的路徑很長的.plf格式的文件,會不會導致
緩沖區溢出呢?
于是我生成一個 5000 字節全“A”的名為 test.plf的文件,播放器在加載這個文件之后
立即退出了。我們用調試器 attach到播放器進程,讓播放器加載 test.plf,軟件異常:

圖 2  顯示了軟件出現異常時調試器停在了 0x00403C64,:
00403C64   $ 8B10           MOV EDX,DWORD PTR DS:[EAX]
由于EAX寄存器被覆蓋成了0x41414141導致了訪問異常,而觀察此時的棧空間的情況,
我們可以發現從 0x12E9C4 的棧地址開始,一直到 0x12FD48 的地址的內容全部被覆蓋
成”0x41414141”的值。0x12FD48-0x12E9C4+4=0x1388 (5000),剛好等于我們構造的字符數
目。所以由此可以得出結論:該軟件缺乏對輸入文件路徑長度的限制,導致了該軟件存在棧
的緩沖區的溢出漏洞。


深入分析
 
  接下來的工作當然是調試該軟件,深入分析該軟件產生漏洞的原因,調試的方式還是通
過 attach 的方式。文件的處理過程應該是首先通過 CreateFileA 或 CreateFilwW 獲得文件句
柄,之后再通過 ReadFile 將文件內容讀入。所以首先對 CreateFileA和CreateFileW下斷點,
然后將加載 test.plf 文件,斷在系統 CreateFileA函數入口處,此時的棧空間如下:  
 
0012F9A4   00000080  €...  |Attributes = NORMAL
0012F9A8   00000000  ....  \hTemplateFile = NULL
0012F98C   00408947  G‰@.  /CALL to CreateFileA from MP3N.00408942
0012F990   00A777DC    |FileName = "C:\Documents and
Settings\xiaot\Desktop\test.plf"
0012F994   80000000  ...€  |Access = GENERIC_READ
0012F998   00000001   ...  |ShareMode = FILE_SHARE_READ
0012F99C   00000000  ....  |pSecurity = NULL
0012F9A0   00000003   ...  |Mode = OPEN_EXISTING

可以看出這是打開 test.plf 文件的句柄操作,用 Ctrl+F9 回到主程序的運行空間,獲得的
句柄是 0xA8,之后再對 ReadFile 下斷,F9 之后,程序停在 ReadFile 函數入口處,棧空間數
據如下: 
 
0012F980   00408989  ‰‰@.  /CALL to ReadFile from MP3N.00408984
0012F984   000000A8  ¨...  |hFile = 000000A8 (window)
0012F988   00A78894  ”ˆ§.  |Buffer = 00A78894
0012F98C   00001388  ˆ ..  |BytesToRead = 1388 (5000.)
0012F990   0012F998  ˜ù .  |pBytesRead = 0012F998
0012F994 00000000 .... \pOverlapped = NULL 

程序會將文件中的數據拷貝到以 0xA78894 為首地址的緩沖區,讀入的數據大小是 5000
字節。之后的程序處理流程就是判斷讀入的字符數是否為 0,然后通過 0x0A和 0x0D來切割
輸入的緩沖區字符,然后通過SendMessageA函數,設置LB_ADDSTRING消息,將讀入的緩沖
區發送給播放器窗口的播放列表(listbox控件)。到目前為止程序是沒有問題的,但是接下來,
程序會用一個緩沖區去保存播放文件列表中的值,因為程序會根據播放列表中的值即播放文

本頁地址 http://www.ionrce.tw/xitonganquan/20111028478.html

百度搜索更多

谷歌搜索更多

頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
?
評價:
昵稱: 驗證碼:點擊我更換圖片
推薦內容
贊助商
贊助商
?

關于本站免責聲明視頻更新google百度地圖視頻地圖RRS訂閱

如有什么問題請在本站留言,或發郵件到 hxt167#foxmail.com

内蒙古十一选五基本走势图手机版