Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Войти
 
Страницы: 1
RSS
Microsoft Workstation Service WKSSVC Remote Exploit (MS03-049)
 
Обсуждение статьи Microsoft Workstation Service WKSSVC Remote Exploit (MS03-049)
 
Судя по всему код должен компиляться на VC7, но вот незадача, не известно откуда взять либ для во  этого:

extern char getopt(int,char **,char*);
extern char *optarg;
 
Судя по всему сие хоз-во используется для разбора параметров командной строки :) И я вляется творением кого-то третьего, либо самого автора...
 
Цитата
Undefined пишет:
Судя по всему сие хоз-во используется для разбора параметров командной строки :) И я вляется творением кого-то третьего, либо самого автора...

Совершенно верно, вместе с netcat идут исходники, и там есть такие файлы getopt.c и getopt.h
 
Не могу откомпилировать под Cygwin, пишет ошибок 20 типа undefined reference to '_WNetAddConnection2A@16'
и все из-за winsock2.h В чем дело и как поправить? Язык си знаю не очень если можно поподробнее.
 
Вот результат работу :)

Компилил на VC7, причем если в дебаге компилять то слетает с ошибкой при поппытке запуска с параметром -h
Если откомпилить в релиз-варианте, то вот что:
Пытаюсь я зацепиться на англ Win2k SP4.

-> 'Connecting' mode...
-> Setting up $IPC session...(aka 'null session')
-> IPC$ session setup successfully...
-> Sending exploit string...
-> Will try connecting to shell now....
-> Trial #0....
-> Trial #1....
-> Trial #2....
-> Trial #3....
-> WM_TIMER received...
-> I give up...dude.....
 
Что нужно сделать чтоб компилился на VC6?? Эти файлы getopt.c и getopt.h нашел. Но все равно выходит:
Linking...
eks.obj : error LNK2001: unresolved
external symbol _optarg
eks.obj : error LNK2001: unresolved
external symbol _getopt
Debug/eks.exe : fatal error LNK1120: 2 unresolved externals
Error executing link.exe.
eks.exe - 3 error(s), 0 warning(s)
.
Это не для cygwin
 
char *optarg = NULL;
int   optind = 1;
int   opterr = 1;

#define _next_char(string)  (char)(*(string+1))

int getopt(int argc, char *argv[], char *opstring)
{
    static char *pIndexPosition = NULL;
    char *pArgString = NULL;      
    char  *pOptString;               

    if (pIndexPosition != NULL)
     {
        if (*(++pIndexPosition))
           {
             pArgString = pIndexPosition;
        }
    }

    if (pArgString == NULL)
     {
        if (optind >= argc)
           {
             pIndexPosition = NULL;  /* not in the middle of anything */
             return  EOF;         &n bsp;   /* used up all command-line arguments */
        }
        pArgString = argv[optind++]; /* set this to the next argument ptr */

        if (('/' != *pArgString) && ('-' != *pArgString))
           {
             --optind;      &nb sp;         /* point to current arg once we're done */
             optarg =  NULL;         & nbsp;/* no argument follows the option */
             pIndexPosition = NULL;  /* not in the middle of anything */
             return  EOF;         &n bsp;   /* used up all the command-line flags */
        }

        if ((strcmp(pArgString, "-") == 0) || (strcmp(pArgString, "--") == 0))
           {
             optarg =  NULL;         & nbsp;/* no argument follows the option */
             pIndexPosition = NULL;  /* not in the middle of anything */
             return  EOF;         &n bsp;   /* encountered the special flag */
        }

         pArgString++;         ;        /* look past the / or - */
    }

    if (':' == *pArgString)
     {      ; 
        return (opterr ? (int)'?' : (int)':');
    }
    else if ((pOptString = strchr(opstring, *pArgString)) == 0)
     {
        optarg =  NULL;         & nbsp;    /*  no argument follows the option */
        pIndexPosition = NULL;      /* not in the middle of anything */
        return (opterr ? (int)'?' : (int)*pArgString);
    }
    else
     {
        if (':' == _next_char(pOptString))
           {
             if ('\0' != _next_char(pArgString)) optarg = &pArgString[1];
             else
                 {
                 if (optind < argc) optarg = argv[optind++];
                 else
                      {
                      optarg = NULL;
                      return (opterr ? (int)'?' : (int)*pArgString);
                 }
             }
             pIndexPosition = NULL;  /* not in the middle of anything */
        }
        else
           {
             optarg =  NULL;         & nbsp;/* no argument follows the option */
             pIndexPosition = pArgString;    /* point to the letter we're on */
        }
        return (int)*pArgString;    /* return the letter that matched */
    }
}

куда вставить догадаетесь. Хотя эксплоит все равно сырой и не в рабочем виде
 
Хм, а когда рабочий будет? :)
 
Рабочий он... Правда иногда и только на Win2000... :(
 
d:\sploits\11.14.MS03-049-II.c(67): error C2371: 'getopt' : redefinition; different basic types
Chto delat
Страницы: 1
Читают тему