试图理解php命令的本地文件包含:include'sql.php?/../../ etc / passwd'
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了试图理解php命令的本地文件包含:include'sql.php?/../../ etc / passwd'相关的知识,希望对你有一定的参考价值。
我正在研究一个phpMyAdmin安全漏洞(CVE-2018-12613),它的最佳写作并没有解释一个非常关键的技术细节。
它只是说:“index.php运行包括'sql.php?/../../ etc / passwd',并且PHP有这个魔法将路径转换为../etc/passwd,而不检查目录sql .php?是否存在。“
任何人都可以帮我理解这个吗? https://medium.com/@happyholic1203/phpmyadmin-4-8-0-4-8-1-remote-code-execution-257bcc146f8e
php手册中有一些关于此的信息,例如John Carty写了如何使用您自己的网站注入一些代码,但这并不能解释我的情况。 https://www.php.net/manual/en/function.include.php
当我将以下行写入我自己的apache2 laravel php服务器时:
include('../../../etc/passwd');
然后我在我的页面上获得了etc / passwd的内容,但是写了
include('sql.php?../../../etc/passwd');
要么
include('index.php?../../../etc/passwd');
没做什么。我错过了什么?
结果是include命令:
include 'sql.php?/../../etc/passwd'
只包括'../../../etc/passwd'
include('sql.php?/../../../../etc/passwd');
成功了!我需要一个额外的/../
,以便将sql.php?
视为目录。 include命令的“神奇之处”在于它允许你进入不存在的目录,然后从它们中走出来。
以上是关于试图理解php命令的本地文件包含:include'sql.php?/../../ etc / passwd'的主要内容,如果未能解决你的问题,请参考以下文章