0x00 SUCTF 2019 复现
Check In
其实一开始拿到题有点蒙,以为是常规的文件上传题目,连图片都没试直接去上传图片马,因为想着签到题应该就是很基础的文件上传,然而事实证明,坐井观天实在是太打脸了。DVWA里的是相当基础的东西,意味着,是如今签到题都蔑视的那种程度。
这个题最好还是先上传个真正的图片去看一下,回显什么内容,比如上传到哪个文件目录下,那个目录都有什么内容等等。直接上传图片马的话发现会显示 <? in contents!
说明这里过滤掉了<?
,可以使用<script language='php'></scrip>
绕过。修改后再次上传发现显示exif_imagetype:not image!
,还用了exif_imagetype()
进行检验,可以加上GIF89a
进行绕过。这里发现上传文件的目录下有一个空的index.php ,那么就需要去利用这个index.php去帮助我们上传。
.hatcess与.user.ini
这道题服务端是nginx所以我们用.user.ini
若服务端是apache则我们用.hatcess
这两个功能相似,可以通过在目录下增加这两个文件修改部分配置,同时对于.user.ini而言修改配置无需重启服务器中间件,只需等待300s(即5分钟)配置就能够被重新加载。那么.user.ini可以修改什么配置呢?看图!
这样看来.user.ini可以设定
PHP_INI_USER
和PHP_INI_ALL
的模式 我们再来看.user.ini的官方文档看起来.user.ini文件中
PHP_INI_PERDIR
模式的INI设置也可以被识别,我们理解为除了PHP_INI_SYSTEM
模式的INI设置,.user.ini均可设定,那么哪些配置可以在 .user.ini 中设定呢?php.ini 配置选项列表
今天我们可以用到的便是
auto_prepend_file
,该配置项可以指定在主文件之前自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样。ps:
auto_append_file
可以指定在主文件之后自动解析的文件的名称,并包含该文件,就像使用require函数调用它一样。重要:利用这两个配置项进行包含的前提是含有.user.ini的文件夹下需要有正常的php文件。
Check In思路
先上传.user.ini文件
再上传配置中写到的111.png
菜刀连接该目录下的index.php 此时该php文件已经包含了111.png的一句话代码 拿到flag
总结:还是要多学习 然后用菜刀连接的话,用POST的比较好,GET的之前尝试多次,菜刀和蚁剑都会出玄学错误,感觉每次连菜刀都是拼运气,生怕自己网址会错意写错。