керлинг с php base64 кодером / декодером вместо простого керлинга .... почему? - PullRequest
1 голос
/ 02 октября 2019

Чтение пошагового руководства по Вакхубу для Ваканды здесь

https://medium.com/egghunter/wakanda-1-vulnhub-walkthrough-3d524ed8a372

И он использует php-фильтр, которого я раньше не видел (кодировщик base64), который затем декодируется. Используя эту строку кода

curl http://192.168.56.102/?lang=php://filter/convert.base64-encode/resource=index | head -n 1 | base64 -d

Для сравнения я попытался просто свернуть страницу с помощью

curl http://192.168.56.102/?lang=php

Оба выводят HTML, но отфильтрованный код также создает несколько строк над заголовком DOCTYPEэто заключено внутри тега php. Мой вопрос: почему это происходит?

значимый вывод (первые несколько строк) ниже

<?php
$password ="Niamey4Ever227!!!" ;//I have to remember it

if (isset($_GET['lang']))
{
include($_GET['lang'].".php");
}

?>



<!DOCTYPE html>
<html lang="en"><head>

Очевидно, что это неправильно, но похоже, что отфильтрованный код выглядит следующим образом: кодирование, затем декодирование и каким-то образом в этом процессе становится большеинформация, чем если бы мы просто свернули все

1 Ответ

1 голос
/ 03 октября 2019

Я наткнулся на эту статью

https://www.idontplaydarts.com/2011/02/using-php-filter-for-local-file-inclusion/

, которая очень хорошо объяснила это.

Это заставляет PHP кодировать файл base64 перед его использованием в операторе require. С этого момента необходимо затем декодировать строку base64 для получения исходного кода для файлов PHP.

То, почему отфильтрованный код получает все html и php, заключается в том, что его созданиеphp должен быть закодирован перед захватом html и упаковкой его в одну выходную строку, которая затем может быть декодирована и прочитана. То есть в качестве вывода вы получаете html страницы и код php из других вспомогательных файлов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...