文章目录
1/简介
linux 是一种操作系统,可以相对于 windows 来理解。linux 和 windows 的区别主要体现在 linux (1)具有更高的稳定性和安全性,适合服务器环境;(2)主要通过终端进行操作,可选图形化界面;(3)许多技术都基于 linux 进行开发。
2/常用指令
1/查看目录
ls
—— 列出当前目录下的文件和文件夹
ls /
—— 列出根目录下的文件和文件夹
ls ..
—— 列出上一级目录下的文件和文件夹
2/改变工作目录
cd [目录路径]
—— 改变当前工作目录
cd /
—— 进入根目录
cd ..
—— 返回上一级目录
cd ./[相对目录路径]
—— 以当前目录为参考的相对路径
3/查看文件
cat filename
—— 查看文件内容
4/操作文件
nano filename
—— 创建或编译文本文件
php filename
—— 默认运行 php 文件
mv oldname/目录 newname/目录
—— 移动文件或文件夹
mv oldname newname
—— 可以实现重命名文件
5/删除文件
rm filename/目录 filename/目录
—— 删除文件或文件夹
rm -f filename
—— 删除文件或文件夹(无确认提示)
6/查看环境变量
set
env
cat /etc/profile
—— /etc/profile 是 Linux 系统中一个重要的配置文件,通常用于配置系统范围的环境变量和其他设置
3/非常规指令
1/列出文件
find / -print
—— 列出根目录下的文件和文件夹
dir
—— 列出当前目录下的文件和文件夹(用法类似 ls)
tree
—— 以树状图的形式列出当前文件、文件夹和文件夹内的所有文件
chgrp -v -R www-data /
—— 递归地将根目录下的所有文件和目录的组更改为 www-data,并且在更改每个文件时输出相应的详细信息
echo ${PWD}
—— 输出当前工作路径
2/读取文件
tac
—— 输出文件的内容,但是反向输出(从最后一行开始向前读取)
more
—— 输出文件内容
bamore
—— 输出文件内容,使用环境有较高要求
less
—— 分页查看文件的内容
bzless
—— 与 less 的区别在于可以直接查看 .bz2 压缩文件的内容
head
—— 用于显示文件的开头部分,默认情况下显示文件的前 10 行
tail
—— 用于查看文件的末尾部分
nl
—— 输出文件内容,并给文件内容添加行号
sed -n p
—— 输出文件内容
sort
—— 输出经过排序的文件内容
uniq
—— 输出去除重复行的文件内容
rev
—— 输出反转行内文本顺序的文件内容
rev FileName | rev
—— 输出文件正常顺序的文本内容
od
—— 以八进制的格式输出文件的字节内容
od -c
—— 在 od 的基础上同时显示不可打印字符(如换行符、制表符)为可读形式
vi
—— 在 vi 文本编辑器中读取文件内容
vim
—— 在 vim 文本编辑器中读取文件内容,vim 编辑器是 vi 编辑器的增强版本
man
—— 以 man 格式显示文件内容,man
一般情况下是无法解析普通文本文件的
paste
—— 输出文件内容
grep x FileName
—— 在文件中查找存在 “x” 的行,并将匹配的行输出
file -f FileName
—— 读取 FileName 文件中的每一行作为文件名进行文件类型检查啊
dd if=/FileName
—— 读取文件内容
date -f FileName
—— 读取文件内容,尝试以日期格式解析
a=$(date -f FileName 2>&1);echo $a;
—— 类似 date -f FileName
a=$(. /FileName 2>&1);echo $a;
—— 类似 date -f FileName
a=$(/f* 2>&1);echo $a;
—— 类似 date -f FileName
,不同之处在于这个命令本质上是执行文件,因此要使用 chmod +x /FimeName
给文件添加执行权限
diff /FileName1 /FileName2
—— 比较两个文件的不同并输出不同的部分
4/常见绕过
1/空格绕过
$IFS
${IFS}
$IFS$number
%09
<>
{cat,/flag}
—— 执行cat /flag
(仅使用于少数特定场景)
[!CAUTION]
在实战中有时候
$IFS
无法实现绕过,但是$IFS$number
可以,多进行尝试。
2/_绕过
适用于绕过的形式:
$_GET['show_source']
[
+
.
(空格)
输入 url 中进行 get 传参,最后都可以被处理成 _
。
3/关键字绕过
1/字符拼接绕过
ca''t
、ca\t
、ca""t
—— 等效于 cat
2/通配符绕过
cat /x*
—— 输出根目录下所有以 x 开头的文件(非文件夹)的内容
[!IMPORTANT]
这里介绍一下 linux shell 中通配符的用法:
*
:匹配任意长度的任意字符(包括0个)?
:匹配单个任意字符[]
:匹配指定字符集中的一个字符
3/编码绕过
cat /$'\八进制数\八进制数'
echo "cat命令的 base64编码" | base64 -d | bash
—— 先执行echo "Y2F0IC9mKg=="
,再进行 base64 解码,最后执行解码的结果
4/反引号绕过
cat `ls`
—— linux 下,会先执行反引号下面的语句,这里会先执行ls
,得到结果 fileName,再执行cat fileName
,可以绕过对引号和星号等符号进行过滤的情况
5/可变函数机制
('system')('ls'); 完全等效于 system('ls');