[投稿]Winamp 棧溢出分析及利用

Winamp是一個比較老的播放器,這里主要是通過winamp的一個poc分析,構造一個exp。主程序見附件winamp.exe, poc見附件poc.m3u。

一、Poc分析

首先查看poc如下。發現除了前10多個字節為m3u文件格式規定內容外,其它部分均為A。

1

運行winamp.exe程序,將poc.m3u拖入主界面中,程序直接崩潰。為了查看崩潰時狀態,我們將windbg設置為即時調試器。設置在cmd中使用命令:

再次運行poc,自動彈出windbg,發現崩潰狀態:

2

出現異常,主要是esi+4不可寫,修改esi=0045000,命令為:

繼續運行,停至

3

eax為41414141,[Eax+0c]處也不可讀,且經分析,必須[eax+0c]的第5位為1,程序才會運行至strcpy處,所以修改eax=12c238

4

5

繼續運行,發現程序運行至41414141,這樣我們就完全控制了程序的執行。

6

二、定位異常

通過構造一個特殊的poc來定位:

7

定位結果如下:

esi=eax=306a4139, 程序最后的eip=6141326a

在poc文件中搜索

8

9

可知要繞過異常: 0x11e處的4字節 data需要滿足:

[data+4]可讀

且Byte ptr[data+c] 第5字節為1

最后選擇了一個滿足條件的data:719f7bf0

10

程序覆蓋點在0x126處,此處存放jmp esp的地址(這里用7ffa4512,這是個比較通用的jmp esp地址)。

三、構造exp

完整的exp構造見附件。主要包括4字節繞過異常放在0x11e處,0x126處放jmp esp指令地址,shellcode放在0x12a開始處。

11

測試:(環境xp sp3)

結果:能成功彈出計算器

附件下載地址:http://pan.baidu.com/s/1sjoCWMx

賞金發放情況:本文獲得140RMB,已于6.12日發放到作者賬號。

征稿啟事:91RI 一直相信“你不與人分享,誰與你分享”, 分享的確是件非常有意義的事情。為了讓優秀的同學有 地方分享自己的獨到見解,也為了讓更多同學從分享中受益,同時我們也希望給那些愿意分享的小伙伴們一點點心意作為感謝,所以我們隆重了推出“有獎征文”活 動!本次活動的詳情可以圍觀《征稿啟事