试图了解 php 命令的本地文件包含:包括 'sql.php?/../../etc/passwd'
Trying to understand Local File Inclusion of php command: include 'sql.php?/../../etc/passwd'
我正在调查一个 phpMyAdmin 安全漏洞 (CVE-2018–12613),其中最好的文章没有解释非常关键的技术细节。
它只是说:"index.php runs include 'sql.php?/../../etc/passwd', and PHP has this magic to convert the path to ../etc/passwd, without checking if the directory sql.php? exists or not. "
谁能帮我理解一下?
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 'sql.php?/../../etc/passwd'
只包括'../../../etc/passwd'
include('sql.php?/../../../../etc/passwd');
成功了!我需要一个额外的 /../
以便 sql.php?
被认为是一个目录。 include 命令的 "magic" 是它允许您进入不存在的目录,然后从中退出。
我正在调查一个 phpMyAdmin 安全漏洞 (CVE-2018–12613),其中最好的文章没有解释非常关键的技术细节。
它只是说:"index.php runs include 'sql.php?/../../etc/passwd', and PHP has this magic to convert the path to ../etc/passwd, without checking if the directory sql.php? exists or not. "
谁能帮我理解一下? 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 'sql.php?/../../etc/passwd'
只包括'../../../etc/passwd'
include('sql.php?/../../../../etc/passwd');
成功了!我需要一个额外的 /../
以便 sql.php?
被认为是一个目录。 include 命令的 "magic" 是它允许您进入不存在的目录,然后从中退出。