当前位置: 首页 > article >正文

深入理解 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.kler.cn/a/444558.html

相关文章:

  • 使用 UniApp 在微信小程序中实现 SSE 流式响应
  • 【计算机网络】期末考试预习复习|中
  • Linux crontab 使用教程
  • 微信小程序实现画板画布自由绘制、选择画笔粗细及颜色、记录撤回、画板板擦、清空、写字板、导出绘图、canvas,开箱即用
  • 电商数据采集电商,行业数据分析,平台数据获取|稳定的API接口数据
  • 【ELK】Filebeat采集Docker容器日志
  • 【数据库】大二数据库复习范围 (快速版)帮助你快速复习数据库
  • openeuler24.09 系统无需配置 docker 源即可安装 docker 和 docker-composer
  • springboot437校园悬赏任务平台(论文+源码)_kaic
  • Linux函数栈帧
  • 掌握特征提取:机器学习中的 PCA、t-SNE 和 LDA模型
  • [unity3D] 利用 Button 组件实现鼠标悬停显示文字
  • git 不使用第三方软件解决冲突
  • 小米su7 or 保时捷怎么选?使用 Three 实现 3D 汽车展示平台比比看
  • C语言基础十一:指针变量与数组;数组指针及指针数组
  • 【k8s集群应用】K8S二进制安装大致步骤(简略版)
  • windows免登录linux
  • 前端学习-VUE
  • 探秘 Web3:重塑互联网的新力量
  • 【unity小技巧】unity最全的性能优化方案分享以及如何进行性能测试(2024/11/11更新)
  • 【蓝桥杯每日一题】选数异或——线段树
  • 【linux】shell(38)-数组
  • Micro Sip 配置自己的freeswitch服务器地址
  • SpringBoot如何实现缓存预热?
  • 语音识别失败 chrome下获取浏览器录音功能,因为安全性问题,需要在localhost或127.0.0.1或https下才能获取权限
  • web全局实现文字的中英文的切换