Наверное ни для кого не секрет, что плохой код может привести к печальным последствиям. Особенно это касается сайтов. Недавно, читая статью о том, какие ошибки делают PHP-программисты, и какие уязвимости от этого появляются на сайте, наткнулся на Local File Inclusion. Меня эта уязвимость очень заинтересовала и я решил что-то поломатьпо-подробней изучить её.
После не долгих поисков наодном из форумов нашел ссылку на немецкий сайт http://www.gamecaptain.de. Сразу были замечены интересные параметры в адресной строке
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/b3f/f1b/bf7/b3ff1bbf70b9c5f601506810be5f8cf4.png)
Попробуем что-то из этого извлечь. Для начала получим исходный код index.php
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/9a1/724/d3f/9a1724d3fa8c408cf22120723d7cbbe5.png)
Мы использовали преобразовывающие фильтры. Пара движений и…
![image](https://habrastorage.org/r/w1560/getpro/habr/post_images/971/155/091/97115509111f85694d714cb2f0f3a326.png)
… исходный код файла у нас!
Разберем, что у нас в этом файле. Сразу начал искать участок, в котором немецкие программисты допустили ошибку. Поиски были недолгие
Еще один яркий пример того, как не надо подключать файлы.
Дальше, конечно, я начал искать файл с соединением с базой данных. Очевидно, что это строчка
Проделываем ту же операцию, которую мы делали для index.php, для includes/connect.inc.php
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/339/d74/535/339d745352c8172011c09341112a05bd.jpg)
декодируем полученый base-64 набор символов и получаем информацию для подключения к базе данных
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/12b/e75/248/12be7524831c37beb46fd403ae3fdde7.jpg)
Коннектимся…
![image](https://habrastorage.org/r/w780q1/getpro/habr/post_images/645/950/5dc/6459505dc9ac23bdbaa51087cd662347.jpg)
Всё!
После не долгих поисков наодном из форумов нашел ссылку на немецкий сайт http://www.gamecaptain.de. Сразу были замечены интересные параметры в адресной строке
![image](https://habrastorage.org/getpro/habr/post_images/b3f/f1b/bf7/b3ff1bbf70b9c5f601506810be5f8cf4.png)
Попробуем что-то из этого извлечь. Для начала получим исходный код index.php
![image](https://habrastorage.org/getpro/habr/post_images/9a1/724/d3f/9a1724d3fa8c408cf22120723d7cbbe5.png)
Мы использовали преобразовывающие фильтры. Пара движений и…
![image](https://habrastorage.org/getpro/habr/post_images/971/155/091/97115509111f85694d714cb2f0f3a326.png)
… исходный код файла у нас!
Разберем, что у нас в этом файле. Сразу начал искать участок, в котором немецкие программисты допустили ошибку. Поиски были недолгие
if(!isset($file)) {
if(isset($_POST["file"])) {
$file = $_POST["file"];
} else if (isset($_GET["file"])) {
$file = $_GET["file"];
} else {
if(!isset($sitearea) || $sitearea == "Magazin") {
$file="aktuell.php";
} else {
$file="aktuell_downloads.php";
}
}
}
Еще один яркий пример того, как не надо подключать файлы.
Дальше, конечно, я начал искать файл с соединением с базой данных. Очевидно, что это строчка
require("includes/connect.inc.php");
Проделываем ту же операцию, которую мы делали для index.php, для includes/connect.inc.php
![image](https://habrastorage.org/getpro/habr/post_images/339/d74/535/339d745352c8172011c09341112a05bd.jpg)
декодируем полученый base-64 набор символов и получаем информацию для подключения к базе данных
![image](https://habrastorage.org/getpro/habr/post_images/12b/e75/248/12be7524831c37beb46fd403ae3fdde7.jpg)
Коннектимся…
![image](https://habrastorage.org/getpro/habr/post_images/645/950/5dc/6459505dc9ac23bdbaa51087cd662347.jpg)
Всё!