一.Linux基础命令
Linux命令自查网站
Linux命令大全(手册) – 真正好用的Linux命令在线查询网站 (linuxcool.com)
1.1Linux介绍
(1)Linux特点:免费、开源
(2)Linux系统:类UNIX
(3)Linux发行版:Linux内核+应用程序
解释说明:RHEL --Red Hat Enterprise Linux 和 Oracle Linux--基于商业开发
Debian、archlinux --基于社区开发
1.2Linux系统文件结构
(1)Linux和Unix系统,所有文件和目录都在一个以根节点"/"开始的倒置树状结构。
(2)最顶层是根目录,其它文件及分级关系在倒置树状结构中能得以体现。
(3)与windowx不同,C盘与D盘的文件是隔离开的,linux是联系在一起的。
1./bin:binary二进制--bin目录存放经常使用的命令
2./boot:bootstrap解鞋带;引导程序--boot目录存放Linux的核心文件,包括一些连接文件和镜像文件。
3./dev:device设备--dev目录存放Linux的外部设备。在Linux中访问设备和访问文件的方式是相同的。
4./etc:etcetera等等--etc目录存放所有系统管理所需要的的配置文件和子目录。
5./home:家--home目录是用户的主目录,一般home目录名字是用户的名字。Linux系统中每个用户都有自己的家目录。
6./lib:library图书馆--lib目录存放系统最基本的动态连接共享库,其作用类似于Windows的DLL文件。几乎所有的用户都会应用到这些共享库。
补充介绍Windows的DLL文件
①.dll文件:Dynamic Link Library(动态链接库)文件的缩写。
②它是一种共享库文件,包含了程序所需的代码和数据。
③与静态链接库不同,动态链接库可以在程序运行时动态加载,使得程序的内存占用更小,同时也方便了程序的更新和维护。
7./media:媒介--linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
8./mnt:mount安装;挂载--系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/上,然后进入该目录就可以查看光驱里的内容了。
9./opt:optional可选--给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
10./proc:process进程--/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。
11./sbin:s=Super User的意思,是 Superuser Binaries(超级用户的二进制文件)的缩写,这里存放的是系统管理员使用的系统管理程序。
12./selinux:security linux--这个目录是 Redhat/CentOS 所特有的目录,Selinux是一个安全机制,类似于 windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
13./srv:Save Resource serVice主要用来存储本机或本服务器提供的服务或数据。
14./sys:硬件设备的驱动程序信息。这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs。sysfs文件系统集成了下面3种文件系统的信息:
①针对进程信息的proc文件系统
②针对设备的devfs文件系统
③针对伪终端的devpts文件系统
该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
15./tmp:temporary--用来存放一些临时文件的。
/usr:unix shared resources--这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows下的program files目录。
①/usr/bin:系统用户使用的应用程序。系统用户使用的指令
②/usr/sbin: 超级用户使用的比较高级的管理程序和系统守护程序。root用户使用的指令
③/usr/src:内核源代码默认的放置目录。
16./var:variable易变的--这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
17./run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向run。
18./lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
19.一个点"."和两个".."的区别:
①.代表当前目录,也叫做工作目录。也可以用./表示
②..代表当前目录的上一级目录,即父目录。也可以用../表示
③若一个目录或文件以.开始命名,则该目录或文件属于隐藏目录或隐藏文件,用一般搜索方式无法找到。
open terminal打开终端,即可打开linux的命令行
用户+@+计算机名+当前目录:~
含义:用户chh登录在计算机chh-virtual-machine上
"~"代表当前用户的家目录,"$"代表普通用户,"#"代表超级用户
1.3基础命令--文件目录管理
(一)ls命令
(1)含义:list 列出
(2)功能:显示目录中的文件及属性
(3)语法格式:ls 参数名 文件名
(4)常用参数
默认无参数情况,会列出当前目录的文件
注:ll命令和ls -l和ls -a命令的区别 显示当前目录与文件,不同的是al相比l能显示更多文件。
ls -al 对比 ls -l红色部分为al参数相比l参数多出来的文件(隐藏文件)
ll 对比 ls -al能更加直观的区分哪个是目录哪个是文件,目录名后带有/。
解释说明(每列)
1.第1列表示文件类型:
2.接下来的9列.每3列代表不同权限
第2-4列:文件创建者对该文件的权限
第5-7列:创建者所在组的其他用户对该文件的权限
第8-10列:其他组的其他用户对该文件的权限
r:Read权限"4"--读取权限--能够读取目录或文件
w:Write权限"2"--写入权限--能移动、删除目录或新增、修改文件内容
x:eXecute权限"1"--执行权限--能进入目录或者执行文件
3.其它列说明
(二)cd命令
(1)含义:change directory 切换目录
(2)功能:切换当前目录。(可以是绝对路径也可以是相对路径)
(3)名词解释
①绝对路径:从根目录开始,是一个完整的路径。如D:\java
②相对路径:以当前目录作为参考,使用"../" ”或"./"指向上一级或使用"../../"指向上上一级叫相对路径。
③路径习惯:windows用""表示路径,而unix系统用"/"表示路径。其它语言之间也有所差异。
(4)语法格式:cd 参数 目录名
(5)常用参数(无参数时默认切换到当前用户的家目录)
(三)pwd命令
(1)含义:print work directory打印工作目录
(2)功能:显示当前工作目录的路径,即显示所在位置的绝对路径。
(3)语法格式:pwd 参数
(4)常用参数
(四)mkdir命令
(1)含义:make directories创建目录
(2)功能:创建目录文件
(3)语法格式:mkdir 参数 目录名
(4)常用参数
(五)rmdir命令
(1)含义:remove directory删除目录
(2)功能:仅能删除空目录文件
(3)语法格式:rmdir 参数 目录名
(4)常用参数
说明:只有-R才能递归删除目录及目录内的文件,但是-p只能递归删除空目录。
(六)cp命令
(1)含义:copy file复制文件
(2)功能:复制文件或目录
(3)语法格式:**cp 参数 源文件名 目标文件名 **
(4)常用参数
(七)mv命令
(1)含义:move file移动文件
(2)功能:对文件进行剪切和重命名操作
(3)语法格式:mv 参数 源文件名 目标文件名
(4)常用参数
1.4基础命令--文件查看
(一)cat命令
(1)含义:concatenate files and print 连接并且打印
(2)功能:在终端设备上显示文件内容
(3)语法格式: cat 参数 文件名
(4)常用参数
(5)提示:cat命令适合查看内容较少的纯文本文件。对于内容较多的文件,使用cat命令查看后会在屏幕上快速滚屏,用户往往看不清所显示的具体内容,只好按Ctrl+C组合键中断命令执行,所以对于大文件,干脆用more命令显示吧。
(二)tac命令
(1)含义:cat名字倒过来写
(2)功能:反向显示文件内容(顺序上与cat相反)
(3)语法格式:tac 参数 文件名
(4)常用参数
(三)nl命令
(1)含义:number of lines 行数
(2)功能:显示文件内容及行号
(3)语法格式:nl 参数名 文件名
(4)常用参数
(四)more命令
(1)含义:more 更多
(2)功能:分页显示文本文件的内容
每按一次Enter键即向下一行,每按一次空格键即向下一页,直至看完为止。
(3)语法格式:more 参数 文件名
(4)常用参数
(五)less命令
(1)含义:less 更少
(2)功能:分页显示的功能与more命令很相像但more命令只能从前向后浏览文件内容,而less命令不仅能从前向后浏览(按PageDown键),还可以从后向前浏览(按PageUp键),更加灵活。
(3)语法格式:less 参数 文件名
(4)常用参数
(六)head命令
(1)含义:head 额头
(2)功能:显示文件开头的内容,默认为前10行。
(3)语法格式:head 参数 文件名
(4)常用参数
(七)tail命令
(1)含义:tail 尾巴
(2)功能:查看文件尾部内容 默认会在终端界面上显示指定文件的末尾10行
(3)语法格式:tail 参数 文件名
(4)常用参数
1.5基础命令--文件编辑
(一)vi/vim介绍与区别
1.介绍
所有的Unix Like系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。但是目前我们使用比较多的是 vim 编辑器。Vim 是从 vi 发展出来的 一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
2.vi与vim的区别
vim是vi的升级版本,除了兼容 vi 的所有指令,vim还具有一些新的特性,主要体现在:
(1)多级撤销 在 vi 里,按 u 只能撤销上次命令,而在vim里可以无限制的撤销。
(2)易用性
vi 只能运行于 unix 中,而vim不仅可以运行于 unix,windows ,mac 等多操作平台。
(3)语法加亮
vim可以用不同的颜色加亮显示代码。
(4)可视化操作
vim不仅可以在终端运行,也可以运行于x window、 mac os、 windows。
3.vi的三种模式
1.命令模式Command mode (1)使用vi/vim编写文件时,默认打开命令模式
(2)输入的字符不会被当成内容写入文件,而是被当成命令
(3)命令模式→输入模式:i a o大小写均可。
2.输入模式Insert mode
(1)可以对文件进行内容写入
(2)输入模式→命令模式:esc键
3.底线命令模式Last line mode
(1)切换:在命令行按下":"即可进入底线命令模式
(2)常用命令:
①q:退出程序(如果程序编辑过是无法退出的)
②w:保存文件
4.三种模式之间的转换关系图
4.vi/vim替代文本工具
1.方法:输入命令 gedit 文件名 即可
5.vi/vim常见问题
1.编辑文件时异常退出:会自动生成一个".swp"文件,再重新编辑该文件时,会出现以下界面
解决方案:按d键可以删除该swp文件,再重新编辑该文件即可
2.在命令模式下,使用方向键会出现ABCD之类的字母
解决方案:①先退出编辑该文件,在终端里输入命令 sudo gedit /etc/vim/vimrc.tiny
②修改倒数第二行set compatible,将其改为set nocompatible
③在倒数第二行下面再加一行 set backspace=2,然后保存即可正常使用
会出现这样的gedit警告,并无影响可忽略。
1.6 apt包管理器
1.apt含义:Advanced Packaging Tool--先进的包装工具
2.功能:是一个在 Debian和Ubuntu中的Shell前端软件包管理器
3.特点:apt 命令提供了查找、安装、升级、删除某一个、一组甚至全部软件包的命令,需要root权限。
4.语法:apt [options] [command] [package ...]
(1)options:可选
选项包括
-h(帮助),
-y(当安装过程提示选择全部为"yes")
-q(不显示安装的过程)等等。
(2)command:要进行的操作。
(3)package:安装的包名。
5.换源
说明:由于vim默认从国外下载,所以速度会慢,因此需要换源
(1)源文件地址为:/etc/apt/sources.list
(2)备份:该源文件以后可能会使用,输入命令
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
解释说明:".bak"是backups备份文件的意思,通常在原文件后缀后再加.bak
(3)更换里面的全部内容:先观察有几行,在命令模式下输入"行数+dd"即可清空该文件
这里命令模式下输入51dd
wq保存后出现以下问题,原因是权限不够,因此需要加上sudo命令
sudo vim /etc/apt/sources.list即可
替换sources.list为以下内容:
deb mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb mirrors.aliyun.com/ubuntu/ bionicsecurity main restricted universe multiverse
deb-src mirrors.aliyun.com/ubuntu/ bionicsecurity main restricted universe multiverse
deb mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src mirrors.aliyun.com/ubuntu/ bionicupdates main restricted universe multiverse
deb mirrors.aliyun.com/ubuntu/ bionicproposed main restricted universe multiverse
deb-src mirrors.aliyun.com/ubuntu/ bionicproposed main restricted universe multiverse
deb mirrors.aliyun.com/ubuntu/ bionicbackports main restricted universe multiverse
deb-src mirrors.aliyun.com/ubuntu/ bionicbackports main restricted universe multivers
(4)更新apt:输入命令sudo apt update
1.7 其它常用命令
1.reboot命令
(1)含义:restart boot重启计算机
(2)功能:重启系统
(3)语法:reboot [参数]
(4)常用参数
2.shutdown命令·
(1)含义:关闭
(2)功能:关闭服务器的系统
(3)语法:shutdown 参数 对象
(4)常用参数
3.ifconfig命令
(1)含义:network InterFaces Configuring 网络接口配置
(2)功能:显示或设置网络设备参数信息
(3)语法:ifconfig 参数 网卡名 动作
(4)常用参数
(5)常用动作
说明:Ubuntu默认没有ifconfig命令,需要进行安装
命令:sudo apt install net-tools
4.netstat命令
(1)含义:network statistics网络统计
(2)功能:显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等
(3)语法:netstat 参数
(4)常用参数
说明:常用 netstat -antlp显示端口信息
5.systemctl命令
(1)含义:system control 系统控制
(2)功能:管理系统服务
(3)语法:systemctl 参数 动作 服务名
(4)常用参数
(5)常用动作
6.zip命令
(1)含义:zip 拉链;拉上
**(2)功能:zip命令可以将文件打包成zip格式的压缩包 **
**(3)语法:zip 参数 目标文件名.zip 源文件或目录名 **
(4)常用参数
6.1 unzip命令
(1)含义:unzip 拉开拉链
(2)功能:解压缩zip格式的文件
(3)语法:unzip 参数 压缩包名
(4)常用参数
7.find命令
(1)含义:find 查找
(2)功能:根据给定的路径和条件查找相关文件或目录
(3)语法:find 路径 条件 文件名
(4)常用参数
二.文件基本属性
1.介绍
1.Linux系统是一种典型的多用户系统:不同的用户拥有不同的地位。
2.出于安全性考虑,Linux规定不同用户对同一文件(包括目录文件)的操作权限不同。
2.更改权限的命令
(一)chown
(1)含义:change owner 改变拥有者
(2)功能:改变文件或目录的用户和用户组信息,管理员可以改变一切文件的所属信息,而普通用户只能改变自己文件的所属信息。
(3)语法格式:chown 参数 所属主:所属组 文件名
(4)常用参数
(二)chmod
(1)含义:change mode 改变模式
(2)功能:改变文件或目录权限,默认只有文件的所有者和管理员可以设置文件权限,普通用户只能管理自己文件的权限属性。
(3)语法格式:chmod 参数 文件名
(4)常用参数
(三)chgrp
(1)含义:change group 改变组
(2)功能:更改文件所属用户组
(3)语法格式:chgrp [参数] 目录名
(4)常用参数
三.docker
1.介绍
1.本质:一个开源的应用容器引擎
2.功能:让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的linux机器或者windows机器。
也可以实现虚拟化
3.特点:容器是完全使用沙箱机制,相互之间不会有任何接口
2.docker基本概念
1.docker镜像(Images)
(1)定义:Docker镜像(Images) 是一个用于创建 Docker容器(Container)的静态模板。
(2)特点:一个Docker镜像(Images) 可以创建很多Docker容器 (Container)。
2.docker容器(Container)
(1)定义:Docker容器(Container)是独立运行的一个或一组应用,是从Docker镜像(Images)创建的运行实例
(2)特点:它可以被启动、开始、停止、删除。
3.docker仓库(Registry)
功能介绍:Docker仓库(Registry) 用来保存Docker镜像(Images),是集中存放Docker镜像(Images)文件的场所。
3.docker的意义
(1)渗透测试中必学不可的一个容器工具
(2)在docker中我们能快速创建、运行、测试以及部署应用程序。
(3)当我们对一些漏洞进行本地复现时,可以使用Docker快速搭建漏洞环境,完成复现学习。
4.docker的安装及配置
★说明docker.io和docker.ce的区别?
(1)运行维护商不一样,io是ubuntu团队而ce是docker团队
(2)io是早期版本docker,版本号1.x
ce是新版本docker,版本号17.x,ce是社区版,ee是企业版。
安装过程如下:
S1 输入命令 sudo apt install docker.io
S2 输入命令 docker --version 出现版本信息即安装成功
S3 对docker服务设置开机自启动
命令:sudo systemctl enable docker.service
5.docker加速器
(1)说明:
需要配置docker加速器的原因:国内从DockerHub(Dockerhub是由Docker公司维护的一个公共镜像库。)拉取镜像有时会遇到困难,此时可以配置镜像加速器。
(2)国内云服务商提供的docker国内加速服务:
科大镜像:docker.mirrors.ustc.edu.cn/
阿里云:https://<你的ID>.mirror.aliyuncs.com
七牛云加速器:reg-mirror.qiniu.com
(3)具体实施步骤
S1 在/etc/docker目录下,若没有daemon.json则创建该文件,有则直接修改
我这里没有,我直接创建
S2 编写以下内容
S3 重载daemon的配置文件,并重启docker
重载daemon命令:sudo systemctl restart daemon-reload
重启docker命令:sudo systemctl restart docker
sudo systemctl restart
6.利用docker运行靶场
1.靶场名称:vulapps
2.靶场特点:
①开源
②无需 docker知识
③简单执行一条命令即可编译、运行一个完整的漏洞靶场镜像
3.靶场内容:包含了各种应用、框架的漏洞
4.靶场下载地址:github.com/Medicean/Vu…
5.安装过程
S1 先将靶场文件利用VmwareTools复制到虚拟机Ubuntu上
S2 解压该zip包
S3 找到apisix目录下的docker.compose.yml文件
搜索命令:在apisix目录下 find . -name docker-compose.yml
我们在CVE-2021-45232文件夹中即可
S5 执行命令后就会拉取镜像并运行容器
命令:sudo docker-compose up -d
说明:如果没有docker-compose命令,则手动apt安装该包即可
安装命令:sudo apt install docker-compose
出现版本即安装成功
安装后再执行该命令
执行完之后即可访问该靶场,访问方式可在文件夹中的README.md查看
S6 访问该靶场
靶场的下载地址中打开READ.ME内有访问靶场的方式(用微软浏览器自动翻译即可)
GitHub - vulhub/vulhub: Pre-Built Vulnerable Environments Based on Docker-Compose
解释说明:其中的your-ip是虚拟机ip而非docker内部容器的ip
虚拟机ip可用ifconfig命令查看
S7 成功访问靶场
补充说明:Apache APISIX Dashboard
S8 停止该靶场的命令
docker-compose down