题目如下,打开之后,什么都没有,查看源代码
打开include.php 根据页面名称,猜测是文件包含。
打开题目后发现提示,查看源代码,发现upload.php
经过尝试判断为 白名单,MIME验证,且00截断不可用。想到刚才的include.php 尝试文件包含。
根据报错发现可以包含,但是会自动添加.php后缀。尝试00截断,失败
既然可以包含,那我们尝试读下源码
http://114.67.246.176:10000/include.php?file=php://filter/read=convert.base64-encode/resource=include
成功读到include的源码
发现过滤了很多参数,文件包含的几个常用伪协议,php://input ,file,ftp,,但是zip,和phar://都没有被过滤。既然如此,那就进行进行尝试
步骤如下,先写一个shell.php,然后进行压缩,重命名为shell.png
然后根据phar://的读取方式,构造payload。如下
http://114.67.246.176:10000/include.php?file=phar://upload/shell.jpg/shell
exec
打开题目,查看源代码,发现
打开之后404,根据题目提示,打开exec1.php
不断尝试,得到当前目录文件,但是只有exec1.php,明显flag不在这个目录。一般情况就在根目录。 ls /查看。
发现flag,进行读取,因为不在一个目录,使用../进行跨目录,三层目录。