[SUCTF 2019]CheckIn .user.ini后门

今天第一次写博客,就写刚做的一道题学到的.user.ini吧。

什么是.user.ini

.user.ini看名字后缀就能猜到这是一个配置文件,说到配置文件,那肯定要提一提php.ini文件。php.ini文件是php的默认配置文件,其中包含了很多对php的配置信息,像我们常见的disable_functions、extension_dir等,这些配置分为四种模式

这些模式决定着一个 PHP 的指令在何时何地,是否能够被设定。手册中的每个指令都有其所属的模式。例如有些指令可以在 PHP 脚本中用 ini_set() 来设定,而有些则只能在 php.ini 或 httpd.conf 中。
例如 output_buffering 指令是属于 PHP_INI_PERDIR,因而就不能用 ini_set() 来设定。但是 display_errors 指令是属于 PHP_INI_ALL 因而就可以在任何地方被设定,包括 ini_set()。
明白了四种模式的区别,下面我们看看看一下官网对.user.ini的定义

也就是说,.user.ini文件中可以设置PHP_INI_USER和PHP_INI_PERDIR再加上PHP_INI_ALL模式里配置选项,而且.user.ini是动态加载的,默认是五分钟加载一次,但是注意,只有服务器运行在fastcgi模式下,.user.ini才会被动态加载,那么我们如何用.user.ini来创建一个后门呢?
这里PHP_INI_PERDIR里有两个特别的配置:
auto_append_fil,auto_prepend_file
auto_append_fil相当于在文件前调用require()函数。而auto_append_file是在文件后面包含。 使用方法很简单,直接写在.user.ini中。

实战

这道题可在buuctf上复现
文件上传测试:
一.发现该题目对上传的文件名字里不能包含‘ph’,与我们要上传的.user.ini,还是图片都无影响。
二.用exif_imagetype()对检测文件内容是否符合图片格式,可加入下面的幻数头字节绕过(注意,这里的头字节是二进制,用时要转化成文本格式)
JPG :FF D8 FF E0 00 10 4A 46 49 46
GIF:47 49 46 38 39 61
PNG: 89 50 4E 47
三:文件内容过滤了’<?’,可用<script language=‘php’>

在这里插入图片描述
在这里插入图片描述

上传完毕.user.ini和a.jpg,访问上传目录的index.php文件,上传代码得到执行,得知flag在根目录下,访问可得flag。
最后总结一下 文件上传中.user.ini使用条件:
1.服务器脚本语言为PHP
2.服务器使用CGI/FastCGI模式
3.上传目录下要有可执行的php文件
4.能上传带有php代码的文件
参考文章:
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
https://xz.aliyun.com/t/6091#toc-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值