Liunx基础知识 --7 shell知识

任何有自尊心的黑客都必须能够编写. 就此而言,任何有自尊心的 Linux 管理员都必须能够编写脚本。随着 Windows PowerShell 的到来,Windows 管理员越来越需要编写脚本来执行自动化任务并提高效率。

作为黑客,我们经常需要自动使用多个命令,有时来自多个工具。要成为一名精英黑客,您不仅需要具备高级的 shell 脚本编写技能,还需要能够使用一种广泛使用的脚本语言编写脚本,例如 Ruby(Metasploit 漏洞是用 Ruby 编写的)、Python(许多黑客工具都是Python 脚本)或 Perl(Perl 是最好的文本操作脚本语言)。我们将从基本的 shell 脚本开始,转向高级 shell 脚本,然后逐步使用这些脚本语言中的每一种来开发黑客工具。我们的最终目标是培养足够的脚本技能,以便能够开发我们自己的漏洞。

由于几乎所有 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!”。请注意,我们要“回显”的文本或消息是用双引号引起来的。

 

 

 现在,让我们将这个文件保存为HelloHackersArise并退出我们的文本编辑器。

第 6 步:设置执行权限

当我们创建一个文件时,它不一定是可执行的,即使是我们,所有者也是如此。让我们通过在目录中键入 ls -l 来查看新文件的权限。

 

 

 

如您所见,我们的新文件具有rw-r--r-- (644) 权限。该文件的所有者只有读(r)和写(w)权限,没有执行(x)权限。该组和所有人都只有读取权限。我们需要修改它以授予我们执行权限才能运行此脚本。我们使用 chmod 命令来做到这一点。要授予所有者、组和所有执行权限,我们键入:

kali > chmod 755 HelloHackersArise
 现在,当我们对文件执行长列表 (ls -l) 时,我们可以看到我们具有执行权限。

 

 第 7 步:运行 HelloHackersArise

要运行我们的简单脚本,我们只需键入:

./HelloHackersArise

 

 

 文件名前的./告诉系统我们要在当前目录执行这个脚本这意味着不要查看此文件的 PATH 变量中的目录,而是只查看我当前的目录并运行 HelloHackersArise

然后当我们按下回车键时,我们非常简单的脚本将返回到我们的监视器

第 8 步:使用变量

所以,现在我们有了一个简单的脚本。它所做的只是回显一条消息。如果我们想要创建更高级的脚本,我们可能需要添加一些变量。

变量只是一个存储区域,我们可以在内存中保存一些东西。那个“东西”可能是一些字母或单词(字符串)或数字。它可以帮助向具有可能更改的值的脚本添加功能。

让我们回到我们之前编写的脚本,使用 nmap 扫描打开特定端口的易受攻击的机器。请记住,(不)著名的黑客 Max Butler 使用类似的脚本来查找带有 Aloha POS 的系统,他能够破解该系统以获取数百万个信用卡号码

如您所见,编写此脚本是为了扫描一系列 IP 地址,寻找开放的端口 5505(Aloha 端口为技术支持而开放),然后创建一个报告,其中包含所有开放此端口的 IP 地址。IP 地址范围被“硬编码”到脚本中,只能通过打开和编辑脚本文件来更改。

 

如果我们想改变这个脚本,让它提示我们或任何用户输入要扫描的 IP 地址范围和要查找的端口怎么办?如果只是提示我们输入这些值然后将它们输入到脚本中,使用起来会不会容易得多?

第 9 步:向我们的脚本添加提示和变量

首先,我们可以用 IP 范围替换指定的子网。我们可以使用名为“ FirstIP ”的变量,然后使用名为“ LastIP ”的第二个变量(变量的名称无关紧要,但最佳做法是使用可帮助您记住其内容的变量名称)。

接下来,我们可以用名为“ port ”的变量替换端口号这些变量将只是存储区域,用于保存用户在运行扫描之前将输入的信息。

接下来,我们需要提示用户输入这些值。我们可以使用上面在编写 HelloHackersArise 脚本时学到的echo命令来完成此操作。

因此,我们可以简单地回显“输入起始 IP 地址:”这句话,这将出现在屏幕上,要求用户在他们的 nmap 扫描中输入第一个 IP 地址。

echo "请输入起始IP地址:"

现在,用户在屏幕上看到这个提示,将输入第一个 IP 地址。我们需要一种方法来捕获用户的输入。我们可以通过在 echo 行后面加上read命令和变量名来做到这一点。读取命令获取在键盘 (stdin) 上输入的值并将其放入跟随它的变量中。

read FirstIP

上面的命令会将用户输入的 IP 地址放入变量FirstIP中。然后我们可以在整个脚本中在 FirstIP 中使用该值。

 当然,我们可以通过首先提示用户输入信息然后使用读取命令捕获它来对每个变量执行相同的操作。

接下来,我们只需要在脚本中编辑 nmap 命令以使用我们刚刚创建和填充的变量。当我们想要将值存储在变量中时,我们可以简单地在变量名前加上$,例如$port

因此,要使用 nmap 扫描从第一个用户输入的 IP 到第二个用户输入的 IP 开始的 IP 地址范围并查找用户输入的端口,我们可以像这样重写 nmap 命令:

nmap -sT $FirstIP-$LastIP -p $端口 -oG Aloha

现在,随着脚本的编写,它将扫描一个从 FirstIP 开始到 LastIP 结束的 IP 地址范围,以查找用户输入的端口。现在让我们保存我们的脚本文件并将其命名为Scannerscript

第 10 步:使用用户输入变量运行它

 

现在我们可以运行简单的扫描器脚本,其中包含告诉脚本要扫描的 IP 地址范围和端口的变量,而无需编辑脚本。

./Scannerscript

 

 

posted @ 2023-03-10 15:29  wgd_elwood  阅读(23)  评论(0)    收藏  举报