第一题无回显类型
这里的exec函数会把参数cmd的值当做命令执行,并且没有任何过滤和限制。
对于这种无回显的题目,我们可以选择重定向符>来查看和获取信息。
我们先使用cmd=ls>info然后查看info来获取当前路径下的文件信息,如下:
发现flag.php,我们再次使用重定向符把其内容写入一个文件,再读取这个文件即可,即使用cmd=cat fl*>info,再次前往页面查看即可。
第二题长度限制类型
题目地址页面如下:
查阅源码,发现PHP代码,阅之。输入长度限制不超过5时,输入命令执行。查看信息路径,去之:
因为输入长度限制,我们可以把想要输入的逐一放入一文件中,在这个文件中拼出cat flag.php来,如下:
接下来使用*>f,即cat flag.php命令执行(因为会匹配当前路径所以字符信息此处的相当于cat flag.php),并把信息写入了f,阅之即可,如下:
第三题后缀限制
页面源码无用,主页阅之如下:
对输入的参数path进行后缀限制,这里介绍下正则表达式的/m
因此我们可以配合换行符%0a进行绕过,我们需要令if判断为false,使其执行else语句。那么我们就需要符合正则表达式的后缀限制即输入首行先是以.txt结尾,接着使用%0a绕过,下面就是我们想要输入的内容了cat /flag.
组合起来就是x.txt%0acat /flag*,如下:
第四题无字母shell
主页阅之如下:
过滤纯字母,
我们可以利用异或运算来构建我们需要的东西,构建如下:
=
_=%27_%27.(%af%b0%ac%ab^%ff%ff%ff%ff);
==(%9e%8c%8c%9a%8d%8b^%ff%ff%ff%ff%ff%ff);KaTeX parse error: Expected group after '_' at position 1: _̲__=
;
_;
;($___[0]);
这个东西可以帮助我们获得shell。
然后调用函数读取我们需要的文件就可以了,post一个0调用readfile,如下: