面向黑客的 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 或“#!”。这告诉操作系统vim搜索字符串,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 变量中的目录vim搜索字符串,而是只查看我的当前目录并运行 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 $FirstIP-$LastIP -p $port
现在,在编写脚本时,它将扫描从 FirstIP 开始并以 LastIP 结束的 IP 地址范围,以查找用户输入的端口。现在让我们保存我们的脚本文件并将其命名为Scannerscript。
第 10 步:使用用户输入变量运行它
现在我们可以运行简单的扫描程序脚本,其中的变量告诉脚本要扫描的 IP 地址范围和端口,而无需编辑脚本。
kali> ./Scannerscript
提示我们输入第一个 IP 地址,然后是最后一个 IP 地址和我们要扫描的端口。收集此信息后,它会进行nmap扫描并生成一份报告,其中包含我们指定的开放端口范围内的所有 IP 地址。
限时特惠:本站每日持续更新海量展厅资源,一年会员只需29.9元,全站资源免费下载
站长微信:zhanting688