最近得到一个样本(bhk.py),这是样本中的描述信息:
#**************************************************************************
# Exploit Title : Foxit 4.1.1
# Date : 13/11/2010
# Author : Sud0
# Bug found by : dookie
# Original POC : https://www.exploit-db.com/exploits/15514/
# Software Link : http://www.foxitsoftware.com/downloads/index.php
# Version : 4.1.1
# OS : Windows
# Tested on : XP SP3 En (VirtualBox)
# Type of vuln : EIP / SEH
# Thanks to my wife for her support
# Greetz to: Corelan Security Team
# Greetz to: dookie for finding the bug
# Thanks to offsec for the Exploit Week End challenge
# http://www.corelan.be:8800/index.php/security/corelan-team-members/
# writeup : http://www.corelan.be:8800/index.php/2010/11/13/offensive-security-exploit-weekend/
#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
感谢dookie及Sudo的分享。我根据这个样本调试分析了一下该漏洞,跟踪出最初出问题的地方是lstrcpyw拷贝字符串时覆盖了函数返回地址,下面是分析过程,欢迎大家讨论。
先去异常处理函数0x006a0046看下吧,pop pop ret,没什么 问题,典型的利用异常跳转到Shellcode的利用方式。如果要分析一下Shellcode,那么bp 0x006a0046、shift+F9然后单步就一切了然,这不是这里要讨论的,其实对于这个样本也没有什么定位Shellcode的需要,利用程序(bhk.py)中不是都写明了Shellcode嘛。不过利用程序中的align、control所对应的汇编代码还是有一定参考价值的,演示了成功利用漏洞所应控制的细节方面。