打开之后一片空白,通过改变大小写知道:
Apache/2.4.38 (Debian) Server at node1.anna.nssctf.cn Port 28160
猜测网站根目录可能在/var/www/html下
题目中也没有给提示,所以尝试读取index.php和flag.php文件
//读取文件源码 file=php://filter/read=convert.base64-encode/resource=index.php 显示:空白一片 file=php://filter/read=convert.base64-encode/resource=/var/www/html/index.php 显示:error. //写入一句话木马 file=php://input <?php phpinfo();?> 显示:error.
都没有用
猜测是require_once(),尝试绕过它
(require_once(),如果文件已包含,则不会包含,会生成致命错误(E_COMPILE_ERROR)并停止脚本)
搜索绕过方法:
先来了解一下PHP文件包含机制:
php的文件包含机制是将已经包含的文件与文件的真实路径放进哈希表中,正常情况下,PHP会将用户输入的文件名进行resolve,转换成标准的绝对路径,这个转换的过程会将…/、./、软连接等都进行计算,得到一个最终的路径,再进行包含。如果软连接跳转的次数超过了某一个上限,Linux的lstat函数就会出错,导致PHP计算出的绝对路径就会包含一部分软连接的路径,