关于反弹shell的一点杂记

前置知识:文件描述以及重定向

关于文件描述符:

linux下一切皆文件,文件描述符就是内核为了方便管理文件而给文件分配的数字,类似于c语言操作文件的文件指针,通过操作文件指针就可以达到操作文件的目的。

Linux启动的时候会打开三个文件描述符:

  1. 标准输入 standard input 0 (默认设备是键盘)
  2. 标准输出 standard output 1(默认设备是显示器,或者说终端)
  3. 错误输出 error output 2(默认设备也是显示器(终端))

再次强调一下,Linux下一切皆文件,启动Linux的时候会启动的输入输出设备,所以会生成对应的文件描述符0,1,2,之后再打开其他文件,文件描述符依次增加。

关于重定向:

参考文章:http://c.biancheng.net/view/5956.html

一条命令执行的时候会按照默认的情况进行绑定,比如执行命令的结果会输出到终端里,错误信息输出到终端里,它们会默认和文件描述符‘1‘,‘2‘绑定,但是有的时候,我们想让命令执行的结果输入到文件里,该怎么办?这时候就需要重定向。

两种重定向:

  • 输入重定向 <(<<)
  • 输出重定向 >(>>)

bash会从左往右解析指令,所以重定向也是从左往右解析的。

输入重定向

基本格式:[n]< file(n与<之间没有空格)

说明:将文件描述符n重定向到file文件中,以只读的方式打开文件,如果n缺省,则为0。

关于反弹shell的一点杂记

两条命令的显示结果虽然相同,但是cat file是以键盘作为标准输入,读取了file文件的内容,而cat 0< file则是把标准输入重定向到了file文件中,以只读的方式打开文件,然后显示到终端上。

关于反弹shell的一点杂记

之前说过,bash在会从左往右解释指令,所以bash会先执行0< file,将标准输入重定向到file文件中(只读方式打开文件),然后cat再次接受标准输入的时候,由于标准输入已经被重定向到了file文件中,所以会显示文件内容。

输出重定向

基本格式:[n]> file

说明:将文件描述符n重定向到file文件中,以只写的的方式打开,如果n缺省,则为1。

关于反弹shell的一点杂记

1> file2,将标准输出重定向到file2文件中,所以执行第一条指令的时候看不到终端的回显,因为回显已经被写入了file2中,执行cat file2将回显输出。

标准输出和标准错误输出重定向

基本格式: &> file

说明:将标准输出和标准错误输出重定向到file文件中。

关于反弹shell的一点杂记

和上一点一样,因为标准错误输出是默认是终端,所以执行bash在执行>& file2的时候会将标准错误重定向到file2文件中,file2文件中就写入了本次指令的错误信息。

关于文件描述符以及重定向,如果深入学习的话其实还有很多内容,上述知识仅仅是为了学习bash反弹shell的一点铺垫。

(6月6日凌晨一点,其他内容明天再写吧,草稿先保存到博客上。)

关于反弹shell的一点杂记

上一篇:[bug] Scala eclipse:找不到或无法加载主类


下一篇:Eclipse常用设置