[SUCTF2019]checkin (.user.ini与exif_imagetype()函数绕过)

0x01 题目描述

打开网页发现是一个上传的页面
在这里插入图片描述

1、我们随便上传一个php文件试试
在这里插入图片描述
错误的后缀名


2、我们试试上传图片

在这里插入图片描述
这儿可以猜测是exif_imagetype()函数判断是不是图片,这个很好绕过,在文件头添加图片头就可以了,例如gif的文件头GIF89a


3、我们在图片中添加php代码。
在这里插入图片描述
图片里面不能含有 <?,我们可以用其它语句绕过

<script language=”php”>xxx</script>
<% xxx %>
<? xxx ?>


0x02 思路清理

1、不能上传带有<?的文件
2、上传的文件必须含有图片头

解决方法,我们可以先上传一个.user.ini进去,用来解析含有php代码的图片,即可达到绕过限制的目的。

上传图片a.gif包含的代码
GIF89a
<script language='php'>system('cat /flag');</script>
上传的.user.ini的代码
GIF89a
auto_prepend_file=a.gif

auto_prepend_file=a.gif这句话相当于当前文件夹中的所有php文件都会包含a.gif


0x03 答题

上传这两个文件后显示
在这里插入图片描述我们直接访问上传目录中的index.php
在这里插入图片描述
出题人故意在上传目录中设置一个可以访问的php文件,这样我么才能包含上传的图片代码,但在现实例子中较为少见。



0x04 .user.ini实战利用的可能性

综上所述.user.ini的利用条件如下:

  • 服务器脚本语言为PHP
  • 服务器使用CGI/FastCGI模式
  • 上传目录下要有可执行的php文件

从这来看.user.ini要比.htaccess的应用范围要广一些,毕竟.htaccess只能用于Apache

但仔细推敲我们就会感到“上传目录下要有可执行的php文件”这个要求在文件上传中也比较苛刻,应该没有天才开发者会把上传文件放在主目录或者把php文件放在上传文件夹。

但也不是全无办法,如果我们根据实际情况配合其他漏洞使用可能会有奇效,前段时间我遇到一个CMS对上传时的路径没有检测../,因此导致文件可被上传至任意目录,这种情况下我们就很有可能可以利用.user.ini

除此之外,把.user.ini利用在隐藏后门上应该是个很好的利用方法,我们在存在php文件的目录下留下.user.ini和我们的图片马,这样就达到了隐藏后门的目的。

发布了47 篇原创文章 · 获赞 2 · 访问量 3140

猜你喜欢

转载自blog.csdn.net/a3320315/article/details/102923965