命令执行bypass的总结

命令执行bypass的总结

关于文件读取的命令

cat

cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。

1
2
3
4
root@c6017a98836f:/var# cat 1.txt
123456
555
666

tac

tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。

1
2
3
4
root@c6017a98836f:/var# tac 1.txt
666
555
123456

head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。

1
2
3
4
root@c6017a98836f:/var# head 1.txt
123456
555
666

tail

tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
root@c6017a98836f:/var# tail 1.txt
123456
555
666


root@c6017a98836f:/var# tail 1.txt 2.txt
==> 1.txt <==
123456
555
666

==> 2.txt <==
aaa
bbb

more

more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。

1
2
3
4
root@c6017a98836f:/var# more 1.txt
123456
555
666

less(在docker中可能不存在这个命令)

less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

1
2
3
4
5
less 1.txt

123456
555
666

nl

nl命令读取 file 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。在输出中,nl命令根据您在命令行中指定的标志来计算左边的行。输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。除非使用-p选项,nl 命令在每个逻辑页开始的地方重新设置行号。可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。其默认的结果与cat -n有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能。

1
2
3
4
root@c6017a98836f:/var# nl 1.txt
1 123456
2 555
3 666

base64

从指定的文件file中读取数据,编码为base64字符串输出。

1
2
root@c6017a98836f:/var# base64 1.txt
MTIzNDU2CjU1NQo2NjYK

base32

从指定的文件file中读取数据,编码为base32字符串输出。

1
2
root@c6017a98836f:/var# base32 1.txt
GEZDGNBVGYFDKNJVBI3DMNQK

strings

strings命令在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。

1
2
root@c6017a98836f:/var# strings 1.txt
123456

sort

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

1
2
3
root@9423a7551563:/# sort 1.txt
123
456

rev

每行都倒序输出

1
2
3
4
ubuntu@VM-0-16-ubuntu:~$ rev 1.php
.atad fo setyb )48(65 )1.0.0.721( 1.0.0.721 GNIP
sm 340.0=emit 46=ltt 1=qes_pmci :1.0.0.721 morf setyb 46
sm 140.0=emit 46=ltt 2=qes_pmci :1.0.0.721 morf setyb 46

od

od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。

1
2
3
root@c6017a98836f:/var# od 1.txt
0000000 031061 032063 033065 032412 032465 033012 033066 000012
0000017

cut

cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

cut选项说明:

1
2
3
4
5
选项-b,以字节为单位进行分割,-b支持形如3-5的写法,而且多个定位之间用逗号隔开就成了,比如想提取第3,第4、第5和第8个字节,命令为 -b 3-5,8

选项-c,以字符为单位进行分割。用法与-b类似

选项-f,后面跟列号,比如-f 1,表示读取第一列的信息
1
2
3
4
5
6
7
8
root@c6017a98836f:/var# cut -b 1-30 /flag
huctf{put_1s_a_900d_wa7}

root@c6017a98836f:/var# cut -f 1 /flag
huctf{put_1s_a_900d_wa7}

root@c6017a98836f:/var# cut -c 1-30 /flag
huctf{put_1s_a_900d_wa7}

hexdump(在docker中可能不存在这个命令)

hexdump命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。

1
2
3
4
ubuntu@VM-0-16-ubuntu:~$ hexdump 1.txt
0000000 6568 6c6c 206f 6978 6e61 7579 3231 2133
0000010 000a
0000011

xxd(在docker中可能不存在这个命令)

xxd能将一个给定文件或标准输入转换为十六进制形式,也能将十六进制转换回二进制形式。

1
2
3
ubuntu@VM-0-16-ubuntu:~$ xxd 1.txt
00000000: 6865 6c6c 6f20 7869 616e 7975 3132 3321 hello xianyu123!
00000010: 0a

空格过滤

方法1:${IFS}

payload1:

1
2
ubuntu@VM-0-16-ubuntu:~$ ls${IFS}/home
ubuntu

payload2:

1
2
ubuntu@VM-0-16-ubuntu:~$ ls$IFS/home
ubuntu

payload3:

1
2
ubuntu@VM-0-16-ubuntu:~$ ls$IFS$9/home
ubuntu

方法2:重定向符<>

payload1:

1
2
3
4
root@c6017a98836f:/var# cat<>1.txt
1
2
3

payload2:

1
2
3
4
root@c6017a98836f:/var# cat<1.txt
1
2
3

本文标题:命令执行bypass的总结

文章作者:xianyu123

发布时间:2019年12月11日 - 10:17

最后更新:2020年01月12日 - 19:24

原始链接:http://0clickjacking0.github.io/2019/12/11/命令执行bypass的总结/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

-------------    本文结束  感谢您的阅读    -------------