面向黑客的 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 $FirstIP-$LastIP -p $port
現在,在編寫腳本時,它将掃描從 FirstIP 開始并以 LastIP 結束的 IP 地址範圍,以查找用戶輸入的端口。現在讓我們保存我們的腳本文件并将其命名為Scannerscript。
第 10 步:使用用戶輸入變量運行它
現在我們可以運行簡單的掃描程序腳本,其中的變量告訴腳本要掃描的 IP 地址範圍和端口,而無需編輯腳本。
kali> ./Scannerscript
提示我們輸入第一個 IP 地址,然後是最後一個 IP 地址和我們要掃描的端口。收集此信息後,它會進行nmap掃描并生成一份報告,其中包含我們指定的開放端口範圍内的所有 IP 地址。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!