日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

CVE-2012-0158栈溢出漏洞分析

發布時間:2025/3/21 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 CVE-2012-0158栈溢出漏洞分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 漏洞描述
    • 分析環境
    • 漏洞分析
      • 尋找漏洞函數
      • 驗證漏洞函數
      • 縮小漏洞范圍
      • 探究漏洞本質
    • 漏洞修復

漏洞描述

該漏洞發生在MSCOMCTL.OCX模塊中,在一段內存拷貝時,由于檢查條件錯誤造成基于棧的緩沖區溢出

分析環境

環境版本
操作系統W7 x64
調試器windbg
反匯編器IDA Pro
漏洞軟件Office 2003 SP3
Office格式分析工具OffVis

漏洞分析

尋找漏洞函數

首先用windbg附加WINWORD.EXE,接著打開漏洞樣本,輸入g命令運行

此時觸發異常崩潰,觸發異常的模塊為C:\Windows\SysWOW64\MSCOMCTL.OCX,奔潰的地址是0x41414141

接下來查看 一下函數的堆棧,發現堆棧地址已經被破壞了

接著查看一下前面的堆棧,接著又看到了41414141這個地址

接著在IDA中查看MSCOMCTL.OCX,發現275c8a0a是漏洞模塊的返回地址

驗證漏洞函數

接下來我們來驗證一下sub_275C876D這個函數是不是漏洞函數,重新用windbg附加WINWORD.EXE。用sxe ld命令給MSCOMCTL.OCX下模塊斷點

斷下來之后在漏洞函數地址下bp斷點

斷下來之后,需要分析堆棧中的內容

這里發現了MSCOMCTL模塊內的一個地址275e701a,用IDA查看下是不是外層函數的返回地址

接著我們進到sub_275C89C7這個函數

發現這個函數就是我們之前找到的漏洞函數,那么說明這個地址就是外層函數的返回地址

F10步過這個函數,再查看esp,發現這個返回地址已經被修改為41414141,這也就驗證了這個函數就是觸發漏洞的函數

縮小漏洞范圍

用IDA F5查看這個函數內部,通過猜測加驗證可以得出,觸發漏洞的函數就是這個qmemcpy這個函數

重新用windbg附加WINWORD.EXE,繼續在剛才驗證過的漏洞函數下斷點。

斷下之后,查看esi和edi的內容

275e701a是我們剛才驗證過的函數的返回地址,這里在進行內存拷貝的時候被41414141覆蓋。這樣,我們就確定了溢出點

探究漏洞本質

我們在IDA中在往外回溯一層,找到調用這個漏洞函數的地方,觸發這個漏洞的根本原因就在這一句

if ( v5 == 1784835907 && dwBytes >= 8 )

當dwBytes >= 8時,條件成立,走下面的漏洞函數。這一句本來是用來控制memcpy函數拷貝的變量的大小的。結果缺因為程序員的代碼邏輯錯誤,將原本是<=8寫成了>=8。如果說這個地方是<=8的話,那么內存拷貝的字節數也就不存在溢出的可能了

總結:

CVE2012-0158之所以經典不是因為它是一個棧溢出,而是一個很典型的由于程序員代碼邏輯的失誤導致的棧溢出漏洞。

漏洞修復

直接用IDA查看修復后的模塊

我們發現這里判斷了拷貝的大小是否等于8,如果不等于8,則函數直接返回。

總結

以上是生活随笔為你收集整理的CVE-2012-0158栈溢出漏洞分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。