Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - tojo2ska8

#1
intente con esa solucion pero aun nada ... pero voy a solucionarlo denlo por echo y luego subo la solucion :D
#2
probé con explorador de internet firefox http://direccionip:7777 y me funciona bien sin necesidad de convertir a srting execvp de igual manera me funciona con netcat nc direccionip 7777 y funciona bien me muestra el resultado en la pantalla de nc , con telnet igual funciona .. pero mi programa cliente no se como controlar o q lineas de codigo me faltan me siento bloqueado :(
#3
Jajjajajjajaj pero igual lo puedes migrar a windows es fácil , en windows trabajo con qt creator
#4
servidor:

#include <stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<unistd.h>
#include<netinet/in.h>
#include<stdlib.h>
#include<netdb.h>
#include<string.h>
#include<arpa/inet.h>
#include<signal.h>
#define PUERTO 7777

int main()
{
struct sockaddr_in servidor;
struct sockaddr_in cliente;
int sock_servidor,sock_cliente;

if((sock_servidor=socket(AF_INET,SOCK_STREAM,0))<0)
{
perror("socket");
return -1;
}
servidor.sin_family=AF_INET;
servidor.sin_port=htons(PUERTO);
servidor.sin_addr.s_addr=INADDR_ANY;

if((bind(sock_servidor,(struct sockaddr *)&servidor,sizeof servidor))<0)
{
perror("bind");
return -1;
}

if(listen(sock_servidor,20)<0)
{
perror("listen");
return -1;
}
int tam_cliente;
char* ip_cliente;
int puerto_cliente;
char mensaje_cliente[20];
signal(SIGCHLD,SIG_IGN);
while(1)
{
tam_cliente=sizeof cliente;
sock_cliente=accept(sock_servidor,(struct sockaddr *)&cliente,&tam_cliente);
if(sock_cliente<0)
{
perror("acceptando cliente");
return -1;
}

ip_cliente=inet_ntoa(cliente.sin_addr);
puerto_cliente=ntohs(cliente.sin_port);
printf("cliente conectado:%s:%d\n",ip_cliente,puerto_cliente);
memset(mensaje_cliente,0,sizeof mensaje_cliente);
//read(sock_cliente,&mensaje_cliente,sizeof mensaje_cliente);
//printf("mensaje cliente:%s\n",mensaje_cliente);
if(!fork())
{
printf("inicio fork\n");
close(sock_servidor);
dup2(sock_cliente,0);
dup2(sock_cliente,1);
close(sock_cliente);
printf("introduzca comando:\n");
fgets(mensaje_cliente,20,stdin);
printf("mensaje_cliente=\n%s",mensaje_cliente);
char *com[]={"ls","-l",NULL};
                        execvp(com[0],com);
exit(1);
}
close(sock_cliente);
}
return 0;
}


cliente:
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<netdb.h>
#include<unistd.h>
#include<stdlib.h>
#include<string.h>

#define PUERTO 7777
int main()
{
struct sockaddr_in cli;
struct sockaddr_in serv;
int s_cliente,s_servidor;

s_cliente=socket(PF_INET,SOCK_STREAM,0);
if (s_cliente<0)
{
perror("socket");
return -1;
}

cli.sin_family=AF_INET;
cli.sin_port=htons(0);
cli.sin_addr.s_addr=htonl(INADDR_ANY);
if(bind(s_cliente,(struct sockaddr *)&cli,sizeof cli)<0)
{
perror("bind");
return -1;
}

serv.sin_family=AF_INET;
serv.sin_port=htons(PUERTO);
serv.sin_addr.s_addr=inet_addr("127.0.0.1");

if(connect(s_cliente,(struct sockaddr *)&serv,sizeof serv)<0)
{
perror("connectando");
return -1;
}
char cadena[30];
//printf("introduzca el comando:\n");
//scanf("%[^\n]",cadena);
//fflush(stdin);
//send(s_cliente,cadena,sizeof cadena,0);
recv(s_cliente,cadena,sizeof cadena,0);
close(s_cliente);
return 0;
}
#5
ok soy nuevo en esto gracias por responder
#6
Código (cpp) [Seleccionar]
while(1)
{
tam_cliente=sizeof cliente;
sock_cliente=accept(sock_servidor,(struct sockaddr *)&cliente,&tam_cliente);
if(sock_cliente<0)
{
perror("acceptando cliente");
return -1;
}

ip_cliente=inet_ntoa(cliente.sin_addr);
puerto_cliente=ntohs(cliente.sin_port);
printf("cliente conectado:%s:%d\n",ip_cliente,puerto_cliente);
memset(mensaje_cliente,0,sizeof mensaje_cliente);
//read(sock_cliente,&mensaje_cliente,sizeof mensaje_cliente);
//printf("mensaje cliente:%s\n",mensaje_cliente);
if(!fork())
{
printf("inicio fork\n");
close(sock_servidor);
dup2(sock_cliente,0);
dup2(sock_cliente,1);
close(sock_cliente);
printf("introduzca comando:\n");
fgets(mensaje_cliente,20,stdin);
printf("mensaje_cliente=\n%s",mensaje_cliente);
char *com[]={"ls","-l",NULL};
                       execvp(com[0],com);
exit(1);
}
close(sock_cliente);
}

me funciona con telnet pero no con mi programa cliente que tengo creado en c que tiene las funciones basicas de conectar con servidor





Código (cpp) [Seleccionar]
int main()
{
   struct sockaddr_in cli;
   struct sockaddr_in serv;
   int s_cliente,s_servidor;

   s_cliente=socket(PF_INET,SOCK_STREAM,0);
   if (s_cliente<0)
   {
      perror("socket");
      return -1;
   }

   cli.sin_family=AF_INET;
   cli.sin_port=htons(0);
   cli.sin_addr.s_addr=htonl(INADDR_ANY);
   if(bind(s_cliente,(struct sockaddr *)&cli,sizeof cli)<0)
   {
      perror("bind");
      return -1;
   }

   serv.sin_family=AF_INET;
   serv.sin_port=htons(PUERTO);
   serv.sin_addr.s_addr=inet_addr("127.0.0.1");

   if(connect(s_cliente,(struct sockaddr *)&serv,sizeof serv)<0)
   {
      perror("connectando");
      return -1;
   }
   char cadena[30];
   //printf("introduzca el comando:\n");
   //scanf("%[^\n]",cadena);
   //fflush(stdin);
   //send(s_cliente,cadena,sizeof cadena,0);
   recv(s_cliente,cadena,sizeof cadena,0);
   close(s_cliente);
   return 0;
}



este es el programa cliente





· Los códigos deben ir en etiquetas GeSHi
· No se debe publicar 2 veces seguidas, usar el boton modificar
>aquí las reglas del foro
-Engel Lex
#7
tengo este codigo estandard de ejemplo no es el coidgo en si:
este codigo esta en el servidor y funciona bien con telnet
Código (cpp) [Seleccionar]
if(!fork())
{
    dup2(sockClie,0);//stdin
    dup2(sockclie,1);//stdout
    close(sockClie);
  fgets(arg,sizeof arg,stdin);
    execvp(arg,arg);
}

el problema q tengo es que no me funciona en mi programa cliente q hago una conecion normal con el connect(sd,....); por ejemplo cuando ejecuto telnet ip puerto me hace peticion del comando y luego muestra el resultado en la pantalla de telnet .. quiero q mi clilene haga lo mismo pero nada porfa  agradezco de antemano su ayuda gracias
#8
hola bro onte preocupes sigue buscando info yo igual estoy en las mismas , encontre un par de codigos en la cual permite enviar comandos y mostrarte esos comandos ejecutados en el servidor o donde esta ejecutandose el backdoor saludos cualquier cosa me escribes

pd estudiando el codigo analizando y aprendiendo los conceptos avanzaras rapido saludos!! :D