黑客最喜欢的脚本之一BASH(初级)
面向黑客的 Linux,第 7 部分:BASH 脚本基础
我认为 黑客都必须有 编写脚本 的能力 。Linux 管理员都必须能够编写脚本。随着 Windows PowerShell 的到来,越来越多的 Windows 管理员需要编写脚本来执行自动化任务并提高效率。 我们经常需要自动化使用多个命令,有时来自多个工具。要成为一名 黑客,您不仅需要具备高级的 shell 脚本编写技能,还需要能够使用一种广泛使用的脚本语言编写脚本,例如 Ruby (Metasploit 漏洞利用是用 Ruby 编写的)、Python(许多黑客工具都是Python 脚本)或 Perl( Perl 是最好的文本操作脚本语言)。
我们将从基本的 shell 脚本开始,到高级的 shell 脚本,然后是这些脚本语言中的每一种,我们的最终目标是 来开发我们自己顺手的工具。
第 1 步: shells 的类型
shell 是用户和操作系统之间的接口。这使我们能够运行命令、实用程序、程序、操作文件等。有许多不同的 shell 可用于 Linux。其中包括 Korn shell、Z shell、C shell 和 Bourne a gain shell (或 BASH) 。
由于几乎所有 Linux 和 UNIX 发行版(包括 Mac OS X 和 Kali)都可以使用 BASH shell,因此我们将在这里专门使用 BASH shell。
第 2 步:BASH 基础知识
要创建一个 shell 脚本,我们需要从一个文本编辑器开始。您可以使用 Linux 中的任何文本编辑器,包括 vi、vim、 emacs 、 gedit 、 kate 等,但我将在这些教程中使用 Leafpad 。
第 3 步:内置 BASH 命令
除了能够从 BASH shell 脚本运行任何系统命令、 应用程序之外,BASH shell 还包含一些它 自己的 命令。这些包括;
: , . , break, cd, continue, eval , exec, exit, export, getopts , hash, pwd ,
readonly , return, set, shift, test, [, times, trap, umask and unset,alias , bind,builtin , command, declare, echo, enable, help, let, local, logout, printf , read, shopt , type, typeset, ulimit and unalias .
稍后的教程中介绍这些命令,这个 shell 已经内置了在 BASH shell 中具有它们的功能的 命令 。
第 4 步: 注释
像任何编码一样,我们可能想要添加注释。注释只是对我们自己或任何其他阅读代码的人的注释,说明我们试图对脚本或脚本的该部分执行什么操作。解释器不会读取或执行这些注释或"注释"。
BASH shell 通过在一行前面加上"#"来启用注释,这是我的第一个脚本,我可以在我的文本编辑器中编写;
#这 是我的第一个脚本!
解释器将忽略 # 之后的所有内容,然后移至下一行。
第 5 步:" Hello ,Hackers-Arise!"
我们将从一个简单的脚本开始,该脚本会向屏幕返回一条消息,上面写着"Hello,Hackers-Arise!"。
我们首先输入 shebang 或"#!"。这告诉操作系统,shebang 后面的任何内容都是我们要用于脚本的解释器。
然后我们在 shebang 后面加上 /bin/bash ,表明我们希望操作系统使用 BASH shell 解释器。我们可以使用其他解释器,例如 PERL 或 Python,但这里我们要使用 BASH 解释器。
#!/bin/bash
接下来,我们输入 echo,这是 Linux 中的一个命令,它告诉系统简单地重复或"回显"到我们的监视器 ( stdout ) 后面的内容。在这种情况下,我们希望系统向我们回显" Hello Hackers-Arise !"。请注意,我们要"回显"的文本或消息是用 双引号引起 来的。
echo " Hello ,Hackers-Arise !"
让我们将此文件保存为 HelloHackersArise 并退出我们的文本编辑器。
第 6 步:设置执行权限
当我们创建一个文件时,它不一定是可执行的, 让我们通过在目录中输入 ls -l 来查看新文件的权限。
我们的新文件具有 rw -r--r-- (644) 权限。该文件的所有者只有读 (r) 和写 (w) 权限,但没有执行 (x) 权限。该组和所有人都只有读取权限。我们需要修改它以赋予我们执行权限才能运行此脚本。我们使用 chmod 命令执行此操作。要授予所有者、组和所有执行权限,我们键入:
kali > chmod 755 HelloHackersArise
现在,当我们对文件进行长列表( ls -l )时,我们可以看到我们具有执行权限。
kali > ls -l
第 7 步:运行 HelloHackersArise
要运行我们的简单脚本,我们只需键入:
kali > ./ HelloHackersArise
文件名前的 ./ 告诉系统我们要在当前目录中执行这个脚本。这意味着不要查看该文件的 PATH 变量中的目录,而是只查看我的当前目录并运行 HelloHackersArise 当我们按下回车键时,我们非常简单的脚本会返回到我们的 值
第 8 步:使用变量
现在我们有一个简单的脚本。它所做的只是回显一条消息。如果我们想创建更高级的脚本,我们可能需要添加一些变量。
变量只是我们可以在内存中保存某些内容的存储区域。 可能是一些字母或单词(字符串)或数字。它可以帮助将功能添加到具有可能更改的值的脚本中。
此 演示 脚本是为了扫描 开放了 5505 端口 的电脑。 然后创建一个报告 结果 ,其中包含打开此端口的所有 IP 地址。
如果我们想修改这个脚本,让它提示我们或任何用户输入要扫描的 IP 地址范围和 要 查找的端口,该怎么办?如果只是提示我们输入这些值,然后将它们输入到脚本中,使用起来会不会容易得多?
让我们看看我们如何做到这一点。
第 9 步:向我们的脚本添加提示和变量
首先,我们可以用 IP 范围替换指定的子网。我们可以使用名为" FirstIP "的变量和名为" LastIP "的第二个变量来完成此 操作 (变量的名称无关紧要,但最佳做法是使用有助于记住它所包含内容的变量名称)。
接下来,我们可以将端口号替换为名为" port "的变量。这些变量将只是存储区域,用于保存用户在运行扫描之前输入的信息。
接下来,我们需要提示用户输入这些值。我们可以使用 上面在 编写 HelloHackersArise 脚本时学到的 echo命令来做到这一点。
因此,我们可以简单地回显"输入起始 IP 地址:"这句话,这将出现在屏幕上,要求用户在他们的 扫描中输入第一个 IP 地址。
echo "输入起始IP地址:"
现在,在屏幕上看到此提示的用户将输入第一个 IP 地址。然后我们需要一种方法来捕获用户的输入。我们可以通过在 echo 行后面加上 read 命令和变量名来做到这一点。读取命令获取在键盘 ( stdin ) 上输入的值并将其放入后面的变量中。 、
读取 FirstIP
上述命令会将用户输入的 IP 地址放入变量 FirstIP 中。然后我们可以在整个脚本中使用 FirstIP 中的该值。
当然,我们可以对每个变量做同样的事情,首先提示用户输入信息,然后使用读取命令来捕获它。
接下来,我们只需要在脚本中编辑 nmap 命令以使用我们刚刚创建和填充的变量。当我们想要将值存储在变量中时,我们可以简单地在变量名称前加上 $ ,例如 $port 。因此,要使用 nmap 扫描从第一个用户输入 IP 到第二个用户输入 IP 的 IP 地址范围并查找用户输入的端口,我们可以像这样重写 nmap 命令:
nmap - sT $ Fi rstIP -$ LastIP -p $port
现在,在编写脚本时,它将扫描从 FirstIP 开始并以 LastIP 结束的 IP 地址范围,以查找用户输入的端口。现在让我们保存我们的脚本文件并将其命名为 Scannerscript 。
第 10 步:使用用户输入变量运行它
现在我们可以运行简单的 扫描程序脚本,其中的变量告诉脚本要扫描的 IP 地址范围和端口,而无需编辑脚本。
kali > ./ Scannerscript
提示我们输入第一个 IP 地址,然后是最后一个 IP 地址和我们要扫描的端口。 收集此 信息后,它会进行 nmap 扫描并生成一份报告,其中包含我们指定的开放端口范围内的所有 IP 地址。