深入理解 Kali Linux:基础命令与操作技巧

 声明!
学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下,如涉及侵权马上删除文章,笔记只是方便各位师傅的学习和探讨,文章所提到的网站以及内容,只做学习交流,其他均与本人以及泷羽sec团队无关,切勿触碰法律底线,否则后果自负!!!!有兴趣的小伙伴可以点击下面连接进入b站主页[B站泷羽sec](https://space.bilibili.com/350329294)                                                                                                                      

目录

  1. Linux 系统基本命令介绍
    • Shell 与终端的关系
    • 常见的 Shell 类型
    • 如何切换和使用不同的 Shell
  2. 环境变量
    • 环境变量的概念
    • 查看和定义环境变量
    • 本地与全局环境变量的区别
  3. Bash 命令历史
    • Bash 命令历史的作用
    • 命令历史可能泄露的敏感信息
    • 如何查看和管理命令历史
    • 防止命令历史泄露的方式
  4. 管道与重定向
    • Linux 三大数据流
    • 重定向的使用方法
    • 管道的使用与实际应用
    • 错误输出的重定向
  5. 文本搜索
    • 文本搜索命令和参数
    • 递归搜索与忽略大小写的使用方法
    • 后渗透阶段的文本搜索应用

1. Linux 系统基本命令介绍

Shell 与终端的关系

Linux 系统默认是通过字符界面与用户交互的。虽然可以安装图形界面(如 GNOME 或 KDE),但在没有图形界面的情况下,用户通过命令行输入指令与操作系统进行交互。

Shell 是 Linux 系统与用户之间的“操作接口”,它接收用户输入的命令并进行解析,然后将这些命令交给 Linux 内核 执行,执行结果最终返回给用户。通过这种方式,Shell 充当了操作系统与用户之间的桥梁。

需要注意的是,终端 并不等同于 Shell。一个系统中可以有多个终端程序,而每个终端都会运行一个独立的 Shell 进程。比如,你在 Kali Linux 中打开一个终端窗口时,实际上是启动了一个 Shell 实例,用户在该终端中输入的所有命令会被该 Shell 解析并传递给操作系统内核执行。

常见的 Shell 类型

Linux 系统最常用的 Shell 是 Bash(Bourne Again Shell)。不过,除了 Bash 之外,还有很多其他类型的 Shell,例如:

  • Bash:最常用的 Shell,兼容并扩展了传统的 sh
  • Zsh:功能强大的 Shell,Kali Linux 最新版本的默认 Shell。
  • Fish:一个现代化的 Shell,提供丰富的自动补全和高亮显示。
  • Csh/Ksh:分别是 C Shell 和 Korn Shell,支持一些不同的功能和语法特性。

你可以通过命令 echo $SHELL 查看当前使用的 Shell 类型。如果你使用的是 Kali Linux,默认的 Shell 很可能是 Zsh,但你可以随时切换回 Bash,通过输入 bash 命令即可。

如何切换和使用不同的 Shell

如果你想在终端中切换到不同的 Shell,比如从 Zsh 切换到 Bash,只需输入 bash 即可,反之则通过输入 zsh 来切换。需要注意的是,某些脚本可能仅在特定的 Shell 下有效,因为不同的 Shell 支持不同的特性与语法。

2. 环境变量

环境变量的概念

在 Linux 中,环境变量 是一组控制 Shell 行为和程序执行的重要信息。每次打开一个终端,都会加载一系列默认的环境变量,这些变量包括用户信息、系统路径等。环境变量为程序提供必要的配置信息,影响着系统的行为与执行。

例如,$PATH 变量包含了一组目录路径,告诉系统在这些目录中查找可执行文件;$USER 变量表示当前用户的名称。

查看和定义环境变量
  • 查看环境变量:可以通过 echo $USER 查看当前用户,或者使用 env 查看所有环境变量。
  • 定义环境变量
    • 本地环境变量:可以通过命令 a=dage 定义一个局部变量。这个变量只在当前终端会话中有效,一旦关闭终端或切换会话,它将失效。
    • 全局环境变量:如果希望变量在子进程中仍然有效,可以使用 export 命令。例如:
      export a=bbbbccc
      
      通过 export 定义的变量可以在当前 Shell 会话及所有子进程中使用。
本地与全局环境变量的区别
  • 本地变量:这些变量仅在当前 Shell 会话中有效。你可以在 Shell 中直接定义,例如:

    a=dage
    echo $a  # 输出 dage
    

    但是如果你启动一个新的 Shell 进程(子 Shell),这些变量就不可用了。

  • 全局变量:如果你希望在当前 Shell 会话及所有子进程中都能访问该变量,你需要使用 export 命令:

    export a=bbbbccc
    echo $a  # 输出 bbbbccc
    

    全局变量在你打开的所有终端中都是有效的,甚至在新启动的进程中也可以访问。

3. Bash 命令历史

Bash 命令历史的作用

每次执行命令时,Bash Shell 会将你输入的命令保存到一个历史文件中(默认情况下是 .bash_history 文件)。通过历史记录,你可以快速查看和重新执行之前的命令。这对于频繁使用的命令或调试非常有帮助。

但是,命令历史可能泄露敏感信息,例如密码、数据库连接信息等。因此,我们需要对历史命令进行管理,以避免敏感信息的泄漏。

命令历史可能泄露的敏感信息

通过查看 .bash_history.zsh_history 文件,恶意用户可能会发现一些潜在的机密信息。例如,如果管理员在命令行中输入了数据库的密码(例如 mysql -u root -p123456),这类命令会被保存下来,可能会被攻击者利用。

如何查看和管理命令历史

你可以通过以下命令查看历史命令:

history

这将显示你执行过的所有命令。你也可以使用 ! 命令快捷方式来执行历史命令,例如:

!72  # 执行第72条历史命令
防止命令历史泄露的方式

为了防止敏感信息被泄露,可以采取以下措施:

  • 禁止记录历史命令:在某些敏感操作中,你可以临时禁用历史记录:
    unset HISTFILE  # 禁用历史记录
    
  • 限制历史记录的存储量:通过设置 HISTSIZE(内存中的历史命令数量)和 HISTFILESIZE(历史文件中的命令数量)来限制命令历史的存储量。

你还可以配置 ~/.bashrc 文件中的 HISTCONTROL 来忽略某些命令的记录。

4. 管道与重定向

Linux 三大数据流

每个命令行程序都通过 三大数据流 与外界进行交互:

  1. 标准输入(STDIN):默认情况下,程序从终端接收输入数据(数据流编号为0)。
  2. 标准输出(STDOUT):程序的输出数据默认显示在终端上(数据流编号为1)。
  3. 标准错误(STDERR):程序的错误输出,也默认显示在终端上(数据流编号为2)。
重定向的使用方法
  • 标准输出重定向:使用 > 符号将命令的输出重定向到文件。例如:

    echo "Hello World" > hello.txt
    

    这会将 "Hello World" 写入 hello.txt 文件。如果文件已经存在,内容将被覆盖。

  • 标准输出追加重定向:使用 >> 符号将命令的输出追加到文件中:

    echo "New Line" >> hello.txt
    
  • 标准错误重定向:如果你希望将错误信息重定向到文件,可以使用 2>

ls nonexistentfile 2> error.txt
管道的使用与实际应用

管道(Pipe) 允许你将一个命令的输出传递给另一个命令。例如,以下命令将 cat 命令的输出传递给 grep,筛选出包含“root”的行:

cat /etc/passwd | grep root
错误输出的重定向

你还可以将错误输出(STDERR)与标准输出分开重定向。例如,将标准输出和错误输出分别重定向到不同文件:

ls /etc > output.txt 2> error.txt

5. 文本搜索

文本搜索命令和参数

在 Linux 中,最常用的文本搜索工具是 grep。它允许你在文件中查找匹配特定模式的文本行。例如,以下命令会查找 /etc/passwd 文件中包含“root”的行:

grep "root" /etc/passwd
  • -i:忽略大小写。
  • -r:递归搜索目录。
  • -l:只显示包含匹配文本的文件名。
递归搜索与忽略大小写的使用方法

递归搜索目录并忽略大小写:

grep -Ri "root" /etc
后渗透阶段的文本搜索应用

在渗透测试中,你可能会需要在大量的文件中查找敏感信息。例如,你可以搜索包含特定关键字的日志文件、配置文件或代码库。这种技术对于发现数据库连接字符串、API 密钥等信息特别有用。

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

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

相关文章

[IT项目管理]九.项目质量管理

九.项目质量管理 9.1项目质量管理的重要性 对于很多IT项目的差劲,大多数人只可以忍受。项目质量管理是IT项目管理的重要组成部分,对于提高项目成功率、降低项目成本、提升客户满意度至关重要。尽管很多人对IT项目的质量问题感到无奈&#x…

SSM 框架结合 Vue 实现电脑测评系统:助力用户明智选择

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常适…

图像生成工具WebUI

介绍 Stable Diffusion WebUI(AUTOMATIC1111,简称A1111)是一个为高级用户设计的图形用户界面(GUI),它提供了丰富的功能和灵活性,以满足复杂和高级的图像生成需求。如今各种人工智能满天飞&…

智源大模型通用算子库FlagGems四大能力升级 持续赋能AI系统开源生态

FlagGems是由智源研究院于2024年6月推出的面向多种AI芯片的开源大模型通用算子库。FlagGems使用Triton语言开发,在Triton生态开源开放的基础上,为多种AI芯片提供开源、统一、高效的算子层生态接入方案。FlagGems沿着统一的中间语言、统一的算子接口和统一…

FFmpeg库之ffplay

文章目录 FFmpeg环境搭建ffplay使用通用选项视频选项音频选项快捷键使用滤镜直播拉流 FFmpeg环境搭建 FFmpeg官网 FFmpeg环境搭建 ./configure \--prefix"$HOME/ffmpeg" \--extra-cflags"-I$HOME/ffmpeg/include" \--extra-ldflags"-L$HOME/ffmpeg…

HTTP协议和接口测试详解

介绍接口测试前我们先来介绍一下HTTP协议,为什么先要介绍HTTP协议呢因为因为我们做接口测试其实就是用测试工具(postman,fiddler,jmeter等等)或代码来模拟用户使用软件的场景,在我们模拟的时候不像平时功能测试时我们有已经开发完…

CVE-2024-32709 WordPress —— Recall 插件存在 SQL 注入漏洞

漏洞描述 WordPress 是一款免费开源的内容管理系统,适用于各类网站,包括个人博客、电子商务系统、企业网站。其插件 WP-Recall 的 account 存在 SQL 注入漏洞,攻击者可以通过该漏洞获取数据库敏感信息。 WP-Recall 版本 <= 16.26.5 漏洞复现 搭建环境、安装插件、完成…

深度学习之目标检测篇——残差网络与FPN结合

特征金字塔多尺度融合特征金字塔的网络原理 这里是基于resnet网络与Fpn做的结合&#xff0c;主要把resnet中的特征层利用FPN的思想一起结合&#xff0c;实现resnet_fpn。增强目标检测backone的有效性。代码实现如下&#xff1a; import torch from torch import Tensor from c…

Qt之修改窗口标题、图标以及自定义标题栏(九)

Qt开发 系列文章 - titles-icons-titlebars&#xff08;九&#xff09; 目录 前言 一、修改标题 二、添加图标 三、更换标题栏 1.效果演示 2.创建标题栏类 3.定义相关函数 4.使用标题栏类 总结 前言 在我们利用Qt设计软件时&#xff0c;经常需要修改窗口标题、更改软…

睡岗和玩手机数据集,4653张原始图,支持YOLO,VOC XML,COCO JSON格式的标注

睡岗和玩手机数据集&#xff0c;4653张原始图&#xff0c;支持YOLO&#xff0c;VOC XML&#xff0c;COCO JSON格式的标注 数据集分割 训练组70&#xff05; 3257图片 有效集20&#xff05; 931图片 测试集10&#xff05; 465图片 预处理 没有采用任何预处…

GIN

gin是什么 Gin 是一个用 Go (Golang) 编写的 HTTP Web 框架。 它具有类似 Martini 的 API&#xff0c;但性能比 Martini 快 40 倍。如果你需要极好的性能&#xff0c;使用 Gin 吧。 特点&#xff1a;gin是golang的net/http库封装的web框架&#xff0c;api友好&#xff0c;注…

Git安装及基础学习

Git学习 Git安装 概述&#xff1a; Git是一个开源的分布式版本控制系统&#xff0c;可以有效、高速的处理 从很小到非常大的项目版本管理&#xff0c;是目前使用范围最广的版本 管理工具。 下载安装&#xff1a; 下载地址&#xff1a;https://git-scm.com/ 下载后傻瓜式一键安…

【Rust自学】4.2. 所有权规则、内存与分配

4.2.0 写在正文之前 在学习了Rust的通用编程概念后&#xff0c;就来到了整个Rust的重中之重——所有权&#xff0c;它跟其他语言都不太一样&#xff0c;很多初学者觉得学起来很难。这个章节就旨在让初学者能够完全掌握这个特性。 本章有三小节&#xff1a; 所有权&#xff1…

git stash 的文件如何找回

在Git中&#xff0c;如果你使用了git stash命令来保存你的工作进度&#xff0c;但之后想要找回这些被stash的文件&#xff0c;你可以按照以下步骤进行操作&#xff1a; 1. 查看stash列表 首先&#xff0c;使用git stash list命令来查看当前保存的所有stash记录。这个命令会列出…

如何构建一个可信的联邦RAG系统。

今天给大家分享一篇论文。 题目是&#xff1a;C-RAG&#xff1a;如何构建一个可信的联邦检索RAG系统。 论文链接:https://arxiv.org/abs/2412.13163 论文概述 尽管大型语言模型 (LLM) 在各种应用中展现出令人印象深刻的能力&#xff0c;但它们仍然存在可信度问题&#xff…

2025年入职/转行网络安全,该如何规划?网络安全职业规划

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。以下是一个关…

Ansible playbook 详解与实战操作

一、概述 playbook 与 ad-hoc 相比,是一种完全不同的运用 ansible 的方式&#xff0c;类似与 saltstack 的 state 状态文件。ad-hoc 无法持久使用&#xff0c;playbook 可以持久使用。 playbook 是由一个或多个 play 组成的列表&#xff0c;play 的主要功能在于将事先归并为一…

ai绘图丨中国新年春节背景第二弹(附关键词

使用工具&#xff1a;千鹿AI 咒语&#xff1a;圆形平面讲台&#xff0c;5 个礼品盒和台灯交错排列&#xff0c;红色背景上的圆形&#xff0c;中国唐朝风格&#xff0c;红色和金色主题&#xff0c;3D 效果图&#xff0c;摄影棚灯光&#xff0c;简约产品展示模型&#xff0c;逼真…

Envoy 进阶指南(下):深入探究Envoy服务和架构

接上篇&#xff1a;《Envoy 进阶指南&#xff08;上&#xff09;&#xff1a;从入门到核心功能全掌握》 链接 文章目录 3.深入探究Envoy3.1 Envoy服务发现机制3.1.1文件订阅3.1.2 gRPC 流式订阅3.1.3 REST-JSON 轮询订阅 3.2监听器&#xff08;Listener&#xff09;3.3.架构3.3…

关于ftp.ncbi.nlm.nih.gov数据下载路由调整的记录

经查防火墙看到ftp.ncbi.nlm.nih.gov的流量比较大&#xff0c;对专线带宽使用造成比较大的负担。 于是把ftp.ncbi.nlm.nih.gov改从PPOE线出&#xff0c;发现下载速度下降好多。通过流量图进行分析&#xff0c; 可以看出路由走PPOE时&#xff0c;仅HTTPS协议有通迅流量&#xf…