打开题目页面如下
看样子是一道有关文件上传的题
上传一句话木马
显示:非法后缀!
看来.php后缀被过滤了
上传一张带有木马的照片
在文件地址处输入cmd
输入以下代码执行
copy 1.jpg/b+4.php/a 5.jpg
最后一行有一句话木马
上传带有木马的图片
但其实木马图片并没有被解析运行,这里涉及一个知识点
user.ini知识点
基本概念
在 PHP 中,user.ini
是一种用户级别的配置文件。与系统级的 php.ini
不同,user.ini
允许用户在特定的目录下自定义 PHP 的配置选项,这些配置仅对该目录及其子目录下的 PHP 脚本生效,提供了更灵活的配置管理方式。
工作原理
扫描机制:PHP 在启动时会扫描每个请求的文档根目录及其子目录,查找 user.ini
文件。当找到该文件后,会加载其中的配置选项,并将其应用到该目录及其子目录下的所有 PHP 脚本中。配置优先级:user.ini
的配置优先级高于系统级的 php.ini
文件。也就是说,如果 user.ini
中定义的某个配置选项与 php.ini
中的配置冲突,那么 user.ini
中的配置将生效。
使用场景
特定项目定制:当你有多个项目运行在同一服务器上,每个项目可能有不同的 PHP 配置需求。此时可以为每个项目创建一个 user.ini
文件,在其中设置该项目所需的特定配置,而不会影响其他项目。
临时配置调整:在开发或测试过程中,你可能需要临时调整某些 PHP 配置选项。通过修改 user.ini
文件,可以快速实现配置的更改,而无需修改系统级的 php.ini
文件。
配置示例
假设你需要为某个项目启用错误报告并设置最大执行时间,可以在该项目的根目录下创建一个 user.ini
文件,并添加以下内容:
; 启用错误报告,显示所有类型的错误
display_errors = On
error_reporting = E_ALL
; 设置脚本的最大执行时间为 60 秒
max_execution_time = 60
安全注意事项
- 文件权限:确保
user.ini
文件的权限设置合理,只有授权用户可以修改该文件。一般来说,建议将文件的权限设置为只读,以防止未经授权的修改。 - 配置内容安全:在
user.ini
中配置的选项可能会影响服务器的安全性。例如,不建议在生产环境中启用display_errors
选项,因为这可能会将敏感的错误信息暴露给用户。 - 防止滥用:由于
user.ini
可以在用户层面进行配置,可能会被恶意用户利用来修改系统配置,从而发起攻击。因此,要对用户上传或修改user.ini
文件的操作进行严格的权限控制和输入验证。
启用 user.ini
要使 user.ini
文件生效,需要确保 PHP 配置中启用了相关设置。在 php.ini
文件中,需要设置以下选项:
; 启用每个目录的 .user.ini 文件扫描
user_ini.filename = "user.ini"
; 设置扫描 .user.ini 文件的间隔时间(秒)
user_ini.cache_ttl = 300
user_ini.filename
指定了用户级配置文件的名称,user_ini.cache_ttl
指定了 PHP 扫描 user.ini
文件的时间间隔,即每隔多少秒检查一次 user.ini
文件是否有更新。
上传user.ini
前面加上GIF89a,绕过检测
用蚁剑连接
最终在根目录中找到flag