命令执行

有的web题目需要注入命令,但是通常会对命令有一定限制。有的是过滤了一些命令需要想办法绕过;还有的是限制了命令的长度,这种情况下可以顺便学习一下Linux下shell的简写、文件流重定向等骚操作
例题:
show_source(__FILE__);error_reporting(0);
if(strlen($_GET[1])<4){
    echo shell_exec($_GET[1]);
}
else{
    echo "hack!!!";
}?>
检测输入,如果输入字符超过三个就会报错。
但是三个字符的命令怎么才能打开一个文件?cat已经要三个了

writeup是这样的:

>nl
*
或
>od
*

命令行中输入一个*,代表将当前文件夹中第一个文件名作为命令,剩下的文件名当作参数

这样看可能不太理解,我们看例子:
如果文件夹中只有一个文件,我们输入*回车即可看到文件内容:
image.png


如果文件夹下不止一个文件:
image.png
一样的
image.png



通过这个通配符还可以实现的骚操作:
``` * /
可以显示/目录下的所有文件
三个字符的命令有:env、pwd