tryhackme-Cyber Security 101-Linux Shells(linux命令框)

目的:了解脚本和不同类型的 Linux shell。

任务1:Introduction to Linux Shells(Linux Shell 简介)

作为操作系统的常规用户,我们都广泛使用图形用户界面 (GUI) 来执行大多数操作。只需点击几下不同的选项,您的任务就完成了。但是,您可以通过在操作系统的 CLI 中编写命令而不是使用 GUI 来执行几乎所有任务。shell 为您在 CLI 中编写的命令提供了一些很棒的功能。这种与 OS 交互的方式更高效且对资源更友好。

假设您在一家餐厅,您的食物有两种选择。第一种选择是从菜单中点餐,服务员会上菜。第二种选择是在厨房里自己做你想要的菜。就 Linux 系统而言,这里的厨房就是操作系统,使用 OS 的 GUI 就像从菜单点菜一样,服务员会为你端上来。但是,使用 CLI 意味着您必须去厨房 (OS) 并烹饪您想要的食物。在此示例中,Shell 将通过为您提供一些食谱建议来帮助您烹饪所需的菜肴。使用 CLI 在 Linux 系统中执行操作可在执行任务时为您提供更多功能和控制。

您可能在电影中看到过黑客场景,这些场景显示了执行许多命令的酷终端。这是因为大多数 Linux 用户更喜欢通过使用 shell 在 CLI 上编写命令来执行操作,而不是使用 GUI。这个房间将教我们如何与 Linux shell 交互。我们还将探索 Linux 中可用的不同 shell,并最后编写一些 shell 脚本。

学习目标

  • 了解与 Linux shell 的交互
  • 使用基本的 shell 命令
  • 探索可用的 Linux shell 类型
  • 编写一些 shell 脚本

会议室先决条件

  • Linux的基础模块

任务2:How To Interact With a Shell?(如何与 shell 交互?)

我们为这个房间准备了一台机器。 首先,让我们通过按下下面给出的 Start Machine 按钮来启动虚拟机。本机将以分屏视图启动。

启动机器

如果 VM 不可见,请使用页面顶部的蓝色 Show Split View 按钮。计算机将在 GUI 中打开。您还可以使用下面的 SSH 凭据通过 Attackbox 或您自己的 VPN 连接计算机连接计算机:

计算机在分屏视图中打开后,您将准备好 shell 提示符 接受命令。

大多数 Linux 发行版使用 Bash (Bourne Again Shell) 作为其 default shell 的 shell 中。但是,当您打开 终端依赖于您的 Linux 发行版。

注意:在接下来的任务中,我们将讨论 不同类型的shell。

您可能已经探索了本房间的先决条件中提到的 Linux 基础模块中的基本 Linux 命令。让我们 简要讨论我们在 shell 中使用的一些最重要的 Shell。

与 shell 交互时,您必须位于 想要执行操作。默认情况下,当您在大多数 Linux 发行版,您将位于主目录中。要查看当前工作目录,可以执行 ,它代表打印工作目录,如下面的终端所示:pwd

在上述命令的结果中,您可以看到您当前的 working directory 为/home/user

但是,您也可以更改目录。为此,您可以使用 (Change Directory 的缩写),如下面的终端所示:cd

使用操作系统的 GUI 时,您可以看到目录的内容 在屏幕上。但是,在使用 shell 时,要查看 目录中,您必须输入以下命令:

如果要读取文件的内容,可以键入 following 命令:cat

grep 命令是 Linux 用户中非常流行的命令。这个强大的命令可以搜索文件中的任何单词或模式。假设您想在一个大文件中搜索特定条目。您可以将 grep 命令与这些条目的模式一起使用,这将为您提取它们。它还可以帮助您在大文件中搜索特定关键字。

以下终端向我们展示了如何使用 grep 命令在大文本文件中搜索单词 “THM”。输出显示包含此单词的文本文件的特定行。

任务3:Types of Linux Shells(Linux Shell 的类型)

与 Windows 操作系统中的命令提示符和 PowerShell 一样,Linux 具有不同的 可用的 shell 类型,每种类型都有自己的功能和 特性。

多个 shell 安装在不同的 Linux 发行版中。自 查看您正在使用的 shell,键入以下命令:

echo $SHELL

这里必须大写shell

您还可以列出 Linux 操作系统中的可用 shell。该文件包含 Linux 系统上所有已安装的 shell。您可以通过在终端中键入来列出 Linux 操作系统中的可用 shell:

/etc/shellscat /etc/shells

要在这些 shell 之间切换,您可以键入 shell 名称,即 出现在您的操作系统上,它将为您打开,如下所示:

如果要永久更改默认 shell,可以使用命令:。这将使此 shell 成为终端的默认 shell。

chsh -s /usr/bin/zsh

Linux shell 有多种类型。我们将讨论其中的一些 及其功能。

Bourne Again Shell

Bourne Again Shell (Bash) 是大多数 Linux 发行版的默认 shell。当您打开终端时,bash 会让您 enter 命令。在 bash 之前,一些 shell (如 sh、ksh 和 csh)具有 不同的功能。Bash 是这些的增强替代品 shell 的 shell 中,从所有这些 shell 中借用了 shell 的功能。这意味着它具有 这些旧shell的许多特征及其一些独特的 能力。列出了 bash 提供的一些关键功能 下面:

  • Bash 是一种广泛使用的 shell,具有脚本功能。
  • 它提供了一个 Tab 键补全功能,这意味着如果你在 在完成命令的过程中,您可以按键盘上的 Tab 键。它会 根据可能的匹配项自动完成命令或为您提供 完成它的多个建议。
  • Bash 会保留一个历史文件并记录您的所有命令。您可以使用 向上和向下箭头键使用前面的命令而无需键入 他们又来了。您还可以键入以显示您之前的所有 命令。history

友好的交互式 Shell

Friendly Interactive Shell (Fish) 在大多数 Linux 发行版中也不是默认的。顾名思义,它更侧重于 比其他 shell 用户友好。提供的一些关键功能 按鱼分类如下:

  • 它提供了一种非常简单的语法,对于初学者来说是可行的 用户。
  • 与 bash 不同,它对您编写的命令具有自动拼写更正功能。
  • 您可以使用一些很酷的主题来自定义命令提示符 鱼。
  • fish 的语法高亮功能会给 fish 的不同部分着色 命令,这可以提高 命令。它还可以帮助我们发现具有独特颜色的错误。
  • Fish 还提供脚本、Tab 键补全和命令历史记录 功能,类似于此任务中提到的 shell。

Z Shell

默认情况下,大多数 Linux 发行版中不安装 Z Shell (Zsh)。它被认为是一种现代 shell,它结合了 一些以前 shell 的功能。一些主要功能 由 ZSH 提供,下面列出了:

  • Zsh 提供高级 Tab 键自动补全功能,并且还能够编写 脚本。
  • 就像 fish 一样,它还为命令提供自动拼写更正。
  • 它提供广泛的定制,这可能会使其比其他定制慢 壳。
  • 它还提供 Tab 键补全、命令历史记录功能和 其他几个功能。

不过我个人感觉,就bash用到多一点,其他使用情况并不多。

特征bashfishZSH
全名Bash 的完整形式是 Bourne Again Shell。Fish 的完整形式是 Friendly Interactive Shell。Zsh 的完整形式是 Z Shell。
脚本它提供广泛兼容的脚本和广泛的文档 可用。与其他两个相比,它的脚本功能有限 壳。它提供了出色的脚本水平,结合了传统的 具有一些额外功能的 Bash shell 的功能。
Tab 键补全它具有基本的 Tab 键补全功能。它通过根据以下因素提供建议来提供高级 Tab 键自动补全 您之前的命令。它的 Tab 键补全功能可以通过使用 插件。
定制基本级别的自定义。它通过交互式工具提供了一些很好的定制。通过 oh-my-zsh 框架进行高级定制。
用户友好性它不太用户友好,但是一种传统且广泛使用的 shell 的 shell 中,它的用户非常熟悉和熟悉它。它是最用户友好的 shell。通过适当的定制,它可以是高度用户友好的。
语法高亮显示语法高亮功能在此 shell 中不可用。语法高亮是此 shell 中内置的。语法高亮可以通过引入 一些插件。

选择最佳 Linux shell 取决于您的使用情况及其 特征。此任务中讨论的 shell 是众多 shell 中的一部分 Linux 中可用的不同 shell。您可以比较 这些不同的 shell 并根据您的任务选择最好的一个。

任务4:Shell Scripting and Components(Shell 脚本和组件)

shell 脚本只不过是一组命令。假设一个重复的 任务要求您使用 shell 输入多个命令。而不是 在每一次重复该任务时一个接一个地输入它们,这可能会 花更多的时间,你可以把它们组合成一个脚本。执行 所有这些命令,您将只执行脚本,而所有 命令。前面提到的所有 shell 任务具有脚本功能。脚本帮助我们自动执行任务。 在学习如何编写脚本之前,我们需要知道,即使 Linux shell 具有脚本功能,但这并不意味着您 只能使用 shell 制作脚本。脚本可以用各种方式完成 编程语言。然而,这个房间的范围是 Cover 使用 shell 编写脚本。

第一步是打开终端并选择一个 shell。我们走吧 使用 bash shell,这是大多数 shell 中默认且广泛使用的 shell 分布。

与我们在 shell 中键入的其他命令不同,我们首先需要 使用脚本的任何文本编辑器创建文件。该文件必须是 以 extension 命名,这是 bash 脚本的默认扩展。 以下终端显示脚本文件的创建:.sh

每个脚本都应该从 shebang 开始。Shebang 是 在脚本开头添加的一些字符,从 with 后跟执行时要使用的解释器的名称 剧本。当我们在 bash 中编写脚本时,让我们将其定义为 Shebang 的翻译。#!

我们现在都准备好编写我们的第一个脚本了。有一些 脚本的基本构建块共同构成了高效的 脚本。让我们学习并利用这些脚本结构来编写一个 编写脚本。

要执行脚本,我们首先需要确保脚本具有 执行权限。要向脚本授予这些权限,我们可以 在我们的终端中键入以下命令:

现在脚本具有执行权限,之前使用 用于执行它的脚本名称。我们使用 before the script 来运行,而不是直接键入脚本名称,因为 shell 会告诉 shell 执行当前目录中存在的文件。如果未在脚本名称之前定义,则 shell 将在 PATH 环境变量(包含除当前目录之外的所有目录)中搜索脚本,并且不会在任何这些目录中找到定义的脚本并生成错误。下面的终端显示了 我们利用了变量:

./

循环

Loop,顾名思义,是重复的东西。为 例如,您有一个包含许多朋友的列表,并且您希望向他们发送 相同的消息。您可以制作一个循环,而不是单独发送它们 在你的脚本中,将你的好友列表提供给 Loop 和 Message 中,然后 它会将该消息发送给您所有的朋友。

对于循环的一般解释,让我们编写一个循环,它将 在屏幕上显示从 1 到 10 开始的所有数字:

# Defining the Interpreter 
#!/bin/bash
for i in {1..10};
do
echo $i
done

第一行包含将从 1 迭代到 10 的变量,并且 每次都执行以下代码。 指示循环的开始 code 并指示结束。在它们之间,我们想要的代码 execute 的 intent 来写入。for 循环将采用每个数字 ,并将其分配给每次迭代中的变量。将在每次迭代时显示此变量的值。ido done echo $i

现在,让我们在执行脚本后执行脚本 许可。

上述终端的输出被剪切成数字,仅用于演示。但是,当根据脚本的逻辑执行时,它将显示 中的数字。31 to 10

条件语句

条件语句是脚本编写的重要组成部分。他们提供帮助 仅当满足条件时,您才执行特定代码; 否则,您可以执行另一个代码。假设您想创建一个 向用户显示密钥的脚本。但是,您希望它被显示给 仅部分用户,仅对高权限用户。您将创建一个 conditional 语句,该语句将首先询问用户的姓名,如果 该名称与 High Authority 用户的名称匹配,则会显示 秘密。

# Defining the Interpreter 
#!/bin/bash
echo "Please enter your name first:"
read name
if [ "$name" = "Stewart" ]; thenecho "Welcome Stewart! Here is the secret: THM_Script"
elseecho "Sorry! You are not authorized to access the secret."
fi

上面的脚本将用户名作为输入,并将其存储到 变量(在 Variables 部分中研究)。条件语句 以 if 开头,并将该变量的值与字符串进行比较 斯图尔特;如果匹配,它将向用户显示密钥,或者 否则它不会。fi 用于结束 for 循环。

以下是显示用户 name 与脚本中定义的 authorized 匹配:

但是,以下终端显示了当 用户名与脚本中定义的 authorized 用户名不匹配:

评论

有时,代码可能非常冗长。在此方案中,代码 当您一段时间后查看它或与之分享时,可能会让您感到困惑 有人。解决此问题的一种简单方法是在 代码的不同部分。评论是我们写的一句话 我们的代码只是为了我们的理解。它用 # sign 后跟一个空格和您需要编写的句子。为 #示例,让我们重写我们在条件 statements 部分并为其添加注释。

# Defining the Interpreter
#!/bin/bash# Asking the user to enter a value.
echo "Please enter your name first:"# Storing the user input value in a variable.
read name# Checking if the name the user entered is equal to our required name.
if [ "$name" = "Stewart" ]; then# If it equals the required name, the following line will be displayed.
echo "Welcome Stewart! Here is the secret: THM_Script"# Defining the sentence to be displayed if the condition fails.
elseecho "Sorry! You are not authorized to access the secret."
fi

了解带有注释的脚本看起来有多容易。注释不会影响 任何脚本的 working 工作。一个好的脚本总是有一些注释。这 上面显示的示例包含每行的注释。这只是一个 更好地解释了它的概念。但是,最好的方式是包括 comments 是在 脚本。

注意:其他类型的变量、循环和 条件语句也可用于完成不同的任务。 此外,还可以在单个 评论。然而,这不是这个房间的范围。

并没有什么特别东西

任务5:The Locker Script(储物柜脚本)

在上一个任务中,我们研究了变量、循环和条件 语句。让我们使用这些知识创建一个 shell 脚本。

要求

用户在银行中有一个储物柜。为了保护储物柜,我们必须拥有 一个在打开用户之前验证用户的脚本。什么时候 执行时,脚本应询问用户的姓名、公司名称、 和 PIN 码。如果用户输入以下详细信息,则应为 允许他们进入,否则应拒绝他们访问。

  • 用户名:John
  • 公司名称:Tryhackme
  • 密码:7385

脚本

# Defining the Interpreter 
#!/bin/bash # Defining the variables
username=""
companyname=""
pin=""# Defining the loop
for i in {1..3}; do
# Defining the conditional statementsif [ "$i" -eq 1 ]; thenecho "Enter your Username:"read usernameelif [ "$i" -eq 2 ]; thenecho "Enter your Company name:"read companynameelseecho "Enter your PIN:"read pinfi
done# Checking if the user entered the correct details
if [ "$username" = "John" ] && [ "$companyname" = "Tryhackme" ] && [ "$pin" = "7385" ]; thenecho "Authentication Successful. You can now access your locker, John."
elseecho "Authentication Denied!!"
fi

脚本执行

任务6:Practical Exercise(实践练习)

我们在附加的 Ubuntu 的默认用户目录中放置了一个脚本 机器。此脚本在所有文件中搜索特定关键字 (带有.log扩展名)在特定目录中。/home/user

注意:脚本内需要进行一些更改 文件。当您按照任务 #2 中的说明打开计算机时,您将能够以普通用户的身份获得会话。但是,我们建议您成为 root 用户,以便在给定目录的所有文件中搜索该标志。 要成为其中一员,您只需键入以下命令并输入用户的密码:

  • 标志: thm-flag01-script
  • 目录:/var/log

grep “cat”  /var/log/authentication.log

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/496254.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

全面Kafka监控方案:从配置到指标

文章目录 1.1.监控配置1.2.监控工具1.3.性能指标系统相关指标GC相关指标JVM相关指标Topic相关指标Broker相关指标 1.4.性能指标说明1.5.重要指标说明 1.1.监控配置 开启JMX服务端口:kafka基本分为broker、producer、consumer三个子项,每一项的启动都需要…

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试

VirtualBox下ubuntu23.04使用主机串口以及使用 minicom 进行串口调试 一、打开设备管理器看主机(Window系统)是否识别出串口,我这边显示的串行通信端口是COM3 二、打开VirtualBox,设置串口和USB设备 串口设置: 启用…

解决PDF.js部署到IIS服务器上后报错mjs,.ftl 404 (Not Found)

一、报错问题描述:部署到IIS服务器上后,浏览器控制台报错报错mjs,.ftl 404 (Not Found),pdf也浏览不了 二、解决方法:在IIS服务器添加MIME类型 将下面类型添加即可 .mjs application/javascript .ftl application/octet-stream保存后&…

Jmeter下载安装配置教程(多版本)

目录 一、介绍 JMeter的主要特点: 使用场景: 二、下载 (一)下载最新版本 (二)下载历史版本 (三)配置环境变量 ​(四)查看版本 (五)启动方式 一、介绍 Apache JMeter 是一款开源的性能测试工具,主要用于对各种服务进行负载测试和性…

PTA数据结构编程题7-1最大子列和问题

我参考的B站up的思路 题目 题目链接 给定K个整数组成的序列{ N 1 ​ , N 2 ​ , …, N K ​ },“连续子列”被定义为{ N i ​ , N i1 ​ , …, N j ​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 1…

【路径规划】原理及实现

路径规划(Path Planning)是指在给定地图、起始点和目标点的情况下,确定应该采取的最佳路径。常见的路径规划算法包括A* 算法、Dijkstra 算法、RRT(Rapidly-exploring Random Tree)等。 目录 一.A* 1.算法原理 2.实…

在 Vue3 项目中实现计时器组件的使用(Vite+Vue3+Node+npm+Element-plus,附测试代码)

一、概述 记录时间 [2024-12-26] 本文讲述如何在 Vue3 项目中使用计时器组件。具体包括开发环境的配置,ViteVue 项目的创建,Element Plus 插件的使用,以及计时器组件的创建和使用。 想要直接实现计时器组件,查看文章的第四部分。…

简单园区网拓扑实验

1.实验拓扑 2.实验要求 1、按照图示的VLAN及IP地址需求,完成相关配置 2、要求SW1为VLAN 2/3的主根及主网关 SW2为vlan 20/30的主根及主网关 SW1和SW2互为备份 3、可以使用super vlan 4、上层通过静态路由协议完成数据通信过程 5、AR1为企业出口路由器 6、要求全网可…

jetson Orin nx + yolov8 TensorRT 加速量化 环境配置

参考【Jetson】Jetson Orin NX纯系统配置环境-CSDN博客 一 系统环境配置: 1.更换源: sudo vi /etc/apt/sources.list.d/nvidia-l4t-apt-source.list2.更新源: sudo apt upgradesudo apt updatesudo apt dist-upgrade sudo apt-get updat…

音视频入门基础:MPEG2-TS专题(22)——FFmpeg源码中,获取TS流的音频信息的实现

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

MySQL45讲 第三十六讲 为什么临时表可以重名?——阅读总结

文章目录 MySQL45讲 第三十六讲 为什么临时表可以重名?——阅读总结一、引言二、临时表与内存表的区别(一)内存表(二)临时表 三、临时表的特性(一)可见性与生命周期(二)与…

MATLAB符号计算-符号表达式基础运算操作

1.1.2符号变量取值域的限定 默认复数域 【例1-1-2】解不等式 1.1.3创建符号表达式 对符号对象进行各种运算(算术运算、关系运算、逻辑运算),即可创建符号表达式。 1.算术运算与转置 【例1-1-3】 f5是f4的共轭转置 f6是f4的转置 2.关系…

深度学习-78-大模型量化之Quantization Aware Training量化感知训练QAT

文章目录 1 量化感知训练1.1 QAT的核心思想1.2 QAT的工作原理1.2.1 第一个维度1.2.2 第二个维度2 大模型的1-bits时代BitNet2.1 BitLinear层2.2 权重量化2.3 激活量化2.4 反量化3 大模型处于1.58Bits状态3.1 零值的作用3.2 量化3.3 效果4 参考附录1 量化感知训练 PTQ方法的一个…

(亲测)frp对外提供简单的文件访问服务-frp静态文件效果

话说有一天,希望将软件安装包放到网上,希望类似如下效果,正好在调试frp docker版,看到frp有个【对外提供简单的文件访问服务】功能,网上搜索也没相关效果图,所以顺手测试一下,截了几张图&#x…

基于YOLOV5+Flask安全帽RTSP视频流实时目标检测

1、背景 在现代工业和建筑行业中,安全始终是首要考虑的因素之一。特别是在施工现场,工人佩戴安全帽是确保人身安全的基本要求。然而,人工监督难免会有疏漏,尤其是在大型工地或复杂环境中,确保每个人都佩戴安全帽变得非…

LabVIEW数字式气压计自动检定系统

开发了一个基于LabVIEW开发的数字式气压计自动检定系统。在自动化检定PTB220和PTB210系列数字气压计,通过优化硬件组成和软件设计,实现高效率和高准确度的检定工作,有效降低人力成本并提升操作准确性。 项目背景 随着自动气象站的广泛部署&a…

FPGA的DMA应用——pcileech

硬件通过pcie总线,访存本机的内存,并进行修改,可以进行很多操作。 学习视频:乱讲DMA及TLP 1-pcileech项目简介和自定义模块介绍_哔哩哔哩_bilibili vivado2024.1的下载文章链接和地址:AMD-Xilinx Vivado™ 2024.1 现…

【漫话机器学习系列】022.微积分中的链式求导法则(chain rule of Calculus)

链式求导法则(Chain Rule of Calculus) 链式求导法则是微积分中的重要工具,用于处理复合函数的求导。它描述了如何计算一个函数的函数(复合函数)的导数。 1. 链式法则的定义 假设有一个复合函数 y f(g(x))&#xff…

TP5 动态渲染多个Layui表格并批量打印所有表格

记录: TP5 动态渲染多个Layui表格每个表格设置有2行表头,并且第一行表头在页面完成后动态渲染显示内容每个表格下面显示统计信息可点击字段排序一次打印页面上的所有表格打印页面上多个table时,让每个table单独一页 后端代码示例: /*** Nod…

开发微信小程序的过程与心得

起因 作为家长,我近期参与了学校的护学岗工作。在这个过程中,我发现需要使用水印相机来记录护学活动,但市面上大多数水印相机应用都要求开通会员才能使用完整功能。作为一名程序员,我决定利用自己的技术背景,开发一个…