概述

Bash 是我们用来与基于 Unix 的操作系统通信并向系统发出命令的脚本语言。自 2019 年 5 月以来,Windows 提供了 Windows 子系统 for Linux,允许我们在 Windows 环境中使用 Bash 。掌握这种语言对于高效地使用它至关重要。脚本语言与编程语言的主要区别在于,我们不需要编译代码来执行脚本语言,而编程语言则相反。

作为渗透测试人员,我们必须能够使用任何操作系统,无论是 Windows 还是 Unix 系统。效率主要取决于对系统的了解,尤其是在提权领域。在 Unix 系统中,学习如何使用终端、过滤数据以及自动化这些过程至关重要。特别是在大型 Unix 企业网络中,我们将不得不处理大量数据。我们必须相应地排序和过滤,以尽快确定潜在的漏洞和信息。

学习如何组合多个命令并处理单个结果也同样重要。这就是脚本的作用所在,它能提高我们的速度和效率。像编程语言一样,脚本语言几乎具有相同的结构,可以分为:

  • 输入与输出
  • 参数、变量和数组
  • 条件执行
  • 算数
  • 循环
  • 比较运算符
  • 函数

通常情况下,我们会自动化一些流程,以避免重复执行或处理大量信息。一般来说,脚本本身不会创建进程,而是由执行脚本的解释器来执行,在这种情况下,是 Bash 。要执行一个脚本,我们需要指定解释器并告诉它应该处理哪个脚本。

条件执行

条件执行允许我们通过满足不同条件来控制脚本的流程。这个功能是基本组件之一。否则,我们只能依次执行一个命令。

在定义各种条件时,我们指定对于特定值应该执行哪些函数或代码段。如果我们满足特定条件,只有该条件的代码会被执行,而其他条件会被跳过。一旦条件代码段完成,条件执行之外的命令将接着执行。

1
2
3
4
5
6
7
8
9
10
11
12
#!/bin/bash

# Check for given argument
if [ $# -eq 0 ]
then
echo -e "You need to specify the target domain.\n"
echo -e "Usage:"
echo -e "\t$0 <domain>"
exit 1
else
domain=$1
fi
  • #!/bin/bash - Shebang. #!/bin/bash - 脚本解释器。
  • if-else-fi - 条件执行。
  • echo - 打印特定输出。
  • $# / $0 / $1 - 特殊变量。
  • domain - 变量。

If-Else-Fi

检查不同条件以处理这些情况是编程中最基本的任务之一。在编程和脚本语言中,条件检查通常有两种不同的形式,即 if-else conditioncase statements 。在伪代码中,if 条件表示以下含义: