因为学生工作原因,好久没有认真学习ctf了,做点题复习一下。
无过滤
分号啥的都可
1;ls /(cat)
& 表示将任务置于后台执行
; 多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块
&& 只有在 && 左边的命令返回真(命令返回值 $? == 0),&&右边的命令才会被执行。
|| 只有在 || 左边的命令返回假(命令返回值 $? == 1),||右边的命令才会被执行。
%0a
%0d
| (管道符) |表示管道,上一条命令的输出,作为下一条命令的参数
过滤cat
换别的命令 tac之类
cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f
过滤空格
用${IFS}
还可以
$IFS
$IFS$1
${IFS}
$IFS$9
< 比如cat<a.tct:表示cat a.txt
<>
{cat,flag.php} //用逗号实现了空格功能,需要用{}括起来
%20
%09
过滤目录分隔符
用cd切目录
1;cd flag_is_here;cat flag_70611185326673.php|base64
过滤运算符
用分号或者%0a
综合过滤
用${IFS}绕过空格,%0a分隔命令,cd切目录,tac代替cat fl*来绕过flag