CTF 中对于 linux 指令的运用

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''tca\tca""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');
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值