Lamber's Blog

Linux下常见的几种反弹shell

字数统计: 689阅读时长: 2 min
2021/08/31

文件描述符

linux文件描述符:可以理解为Linux跟踪打开文件时,分配的一个数字,这个数字有点类似于C语言操作文件时候的句柄,通过句柄就可以实现文件的读写操作。

当linux启动的时候会默认打开三个文件描述符,分别是:

  1. 标准输入: standard input 0 (默认设备键盘)
  2. 标准输出: standard output 1 (默认设备显示器)
  3. 错误输出: error output 2 (默认设备显示器)

stdin 0 –> /dev/tty0
stdout 1 –> /dev/tty0
stderr 2 –> /dev/tty0

注意:

  1. 以后再打开文件,描述符可以依次增加
  2. 每一条shell命令,都会继承其父进程的文件描述符,因此所有的shell命令,都会默认有三个文件描述符。

文件所有输入输出都是由该进程所有打开的文件描述符控制的。(Linux一切皆文件,就连键盘显示器设备都是文件,因此他们的输入输出也是由文件描述符控制)

一条命令执行以前,先会按照默认的情况进行绑定(也就是上面所说的 0,1,2),如果我们有时候需要让输出不显示在显示器上,而是输出到文件或者其他设备,那我们就需要重定向。

重定向

重定向主要分为两种(其他复杂的情况都是由这两种情况衍生出来的)

  1. 输入重定向 < <<
  2. 输出重定向 > >>

重点:

  1. bash在执行一条指令的时候,首先会检查命令中存不存在重定向的符号,如果存在,那么首先将文件描述符重定向(之前说过,输入输出操作都是依赖文件描述符实现的,重定向输入输出本质上就是重定向文件描述符),然后再把重定向去掉,执行指令
  2. 如果指令中存在多个重定向,那么不要随便改变顺序,因为重定向是 从左向右 解析的,如果改变顺序,可能会带来完全不同的结果(这一点我们后面会展示)
  3. < 是对标准输入 0 重定向,> 是对标准输出 1 重定向
  4. 再强调一下,重定向就是针对文件描述符的操作

1. 输入重定向

格式: [n]< word (注意 [n] 与 < 之间是没有空格的)

说明:将文件描述符 n 重定向到 word 指代的文件(以只读方式打开),如果 n 省略就是0(标准输入)

什么是反弹shell

为什么要反弹shell

反弹shell的本质是什么

常见的反弹shell的语句

总结

CATALOG
  1. 1. 文件描述符
  2. 2. 重定向
    1. 2.1. 1. 输入重定向
  3. 3. 什么是反弹shell
  4. 4. 为什么要反弹shell
  5. 5. 反弹shell的本质是什么
  6. 6. 常见的反弹shell的语句
  7. 7. 总结