python -c 'import pty; pty.spawn(\"/bin/bash\")'
ctrl + z
stty raw -echo
fg
这段命令序列涉及到在 Python 中执行一个反向 shell(通过 pty.spawn() 启动一个新的 shell)以及如何使其成为一个真正的交互式 shell。每个部分的作用如下:

1. Python 命令 (python -c 'import pty; pty.spawn("/bin/bash")')

python -c 'import pty; pty.spawn("/bin/bash")'

python -c:表示在命令行中直接执行 Python 代码。

import pty:导入 pty 模块,pty 模块用于创建伪终端(pseudo-terminal),允许 Python 创建和控制子进程的伪终端设备。

pty.spawn("/bin/bash"):使用 pty.spawn() 创建一个新的伪终端,并启动 /bin/bash,即启动一个新的 Bash shell。这个 shell 会成为当前 Python 程序的子进程,并允许用户与它进行交互。


这条命令的目的是启动一个交互式 Bash shell,通常用于在限制性的环境中尝试打开一个终端。

2. Ctrl + Z(暂停进程)

按下 Ctrl + Z 会发送 SIGTSTP 信号,暂停当前进程(在这个例子中是 Python 脚本启动的 shell)。此时,你会看到类似于以下的输出:

[1]+ 1234 suspended python -c 'import pty; pty.spawn("/bin/bash")'

这样,进程会被暂停,但它并没有终止,仍然存在于后台。

3. stty raw -echo(设置终端模式)

stty raw -echo

stty 是用来设置终端行属性的命令。

raw:将终端设置为原始模式,这意味着不进行任何行编辑或处理(输入的每个字符都被立即传递给程序)。

-echo:禁止终端回显,即不显示用户输入的字符。


这些设置有助于在后台启动的 shell 与前台 shell 进行交互,因为它们调整了终端的行为,使得它可以更流畅地接受输入和输出,而不会受到终端的常规输入处理干扰。

4. fg(恢复前台进程)

fg

fg 命令将一个被暂停的后台进程恢复到前台运行。

在这个例子中,fg 会恢复被 Ctrl + Z 暂停的 Python 进程,并使其回到前台,允许你继续与 Bash shell 交互。


总结

整体上,这段命令的目的是:

1. 通过 Python 启动一个交互式的 Bash shell。


2. 使用 Ctrl + Z 将 shell 进程暂停并移到后台。


3. 使用 stty raw -echo 设置终端为适合交互的原始模式。


4. 使用 fg 恢复后台的进程并将其带回前台,从而实现与 shell 的交互。



通常这种方法用于绕过一些限制或在受限环境中获取交互式 shell,尤其是在渗透测试和 CTF(Capture The Flag)挑战中非常常见。
 
 
Back to Top