Я изучал уязвимость в 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 есть некоторая информация об этом, например, Джон Карти написал, как вы можете внедрить некоторый код, используя свой собственный сайт, но это не объясняет мой случай.
https://www.php.net/manual/en/function.include.php
Когда я написал следующую строку в мой собственный php-сервер apache2:
include('../../../etc/passwd');
Затем я получил содержимое файла etc / passwd на своей странице, но написал
include('sql.php?../../../etc/passwd');
или
include('index.php?../../../etc/passwd');
ничего не делать. Чего мне не хватает?
В результате команда include:
include 'sql.php?/../../etc/passwd'
включает только '../../../etc/passwd'