命令执行bypass的总结
关于文件读取的命令
cat
cat命令连接文件并打印到标准输出设备上,cat经常用来显示文件的内容。
1 | root@c6017a98836f:/var# cat 1.txt |
tac
tac命令用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示。
1 | root@c6017a98836f:/var# tac 1.txt |
head
head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。
1 | root@c6017a98836f:/var# head 1.txt |
tail
tail命令用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。
1 | root@c6017a98836f:/var# tail 1.txt |
more
more命令是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。
1 | root@c6017a98836f:/var# more 1.txt |
less(在docker中可能不存在这个命令)
less命令的作用与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。
1 | less 1.txt |
nl
nl命令读取 file 参数(缺省情况下标准输入),计算输入中的行号,将计算过的行号写入标准输出。在输出中,nl命令根据您在命令行中指定的标志来计算左边的行。输入文本必须写在逻辑页中。每个逻辑页有头、主体和页脚节(可以有空节)。除非使用-p
选项,nl 命令在每个逻辑页开始的地方重新设置行号。可以单独为头、主体和页脚节设置行计算标志(例如,头和页脚行可以被计算然而文本行不能)。其默认的结果与cat -n
有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐0等等的功能。
1 | root@c6017a98836f:/var# nl 1.txt |
base64
从指定的文件file中读取数据,编码为base64字符串输出。
1 | root@c6017a98836f:/var# base64 1.txt |
base32
从指定的文件file中读取数据,编码为base32字符串输出。
1 | root@c6017a98836f:/var# base32 1.txt |
strings
strings命令在对象文件或二进制文件中查找可打印的字符串。字符串是4个或更多可打印字符的任意序列,以换行符或空字符结束。 strings命令对识别随机对象文件很有用。
1 | root@c6017a98836f:/var# strings 1.txt |
sort
sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。
1 | root@9423a7551563:/# sort 1.txt |
rev
每行都倒序输出
1 | ubuntu@VM-0-16-ubuntu:~$ rev 1.php |
od
od命令用于输出文件的八进制、十六进制或其它格式编码的字节,通常用于显示或查看文件中不能直接显示在终端的字符。
1 | root@c6017a98836f:/var# od 1.txt |
cut
cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。
cut选项说明:
1 | 选项-b,以字节为单位进行分割,-b支持形如3-5的写法,而且多个定位之间用逗号隔开就成了,比如想提取第3,第4、第5和第8个字节,命令为 -b 3-5,8 |
1 | root@c6017a98836f:/var# cut -b 1-30 /flag |
hexdump(在docker中可能不存在这个命令)
hexdump命令一般用来查看“二进制”文件的十六进制编码,但实际上它能查看任何文件,而不只限于二进制文件。
1 | ubuntu@VM-0-16-ubuntu:~$ hexdump 1.txt |
xxd(在docker中可能不存在这个命令)
xxd能将一个给定文件或标准输入转换为十六进制形式,也能将十六进制转换回二进制形式。
1 | ubuntu@VM-0-16-ubuntu:~$ xxd 1.txt |
空格过滤
方法1:${IFS}
payload1:
1 | ubuntu@VM-0-16-ubuntu:~$ ls${IFS}/home |
payload2:
1 | ubuntu@VM-0-16-ubuntu:~$ ls$IFS/home |
payload3:
1 | ubuntu@VM-0-16-ubuntu:~$ ls$IFS$9/home |
方法2:重定向符<>
payload1:
1 | root@c6017a98836f:/var# cat<>1.txt |
payload2:
1 | root@c6017a98836f:/var# cat<1.txt |