HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Уязвимости
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 19.01.2017, 20:55
t0ma5
Guest
Сообщений: n/a
Провел на форуме:
300820

Репутация: 90
По умолчанию

Цитата:
Сообщение от crlf  
crlf said:

Затянуло меня это задание, второй день копаюсь
Но скила не хватает, правильно ли я понимаю, что главная фишка в поведении ArrayAccess?
не то слово, я пару дней спать нормально не могу.. забрался далеко, но не достаточно(

всё верно, фишка в ArrayAccess, маппер, который в конструкторе класса User

Код:
Code:
public function __construct() {
        parent::__construct($this, array(
            'id'   => array('type' => 'function', 'target' => 'id'),
            'name' => array('type' => 'function', 'target' => 'name')
        ));
    }
определяет какая функцию этого класса будет вызвана, причем передавать параметры в вызов мы не можем, ибо вызов у нас один в файле demo.php

Код:
Code:
$name = $user->name; // Getting the current user name
маппер передаётся сериализованным от клиента, другими словами мы можем подделать вызов функции на нужную переопределив вызываемый класс, он хранится в GenericMapper( который отнаследован от ArrayAccess ) $this->realObject

чего я смог добиться... отправляю класс User и класс Debug

в дебаг классе переопределяю переменную debugStateName с _DEBUG на flag, затем вызываю через модифицированный маппер функцию debugStateName( которая в debug классе )

Код:
Code:
public function getDebugState() {
        return $GLOBALS[$this->debugStateName];
    }
в итоге мы получаем в $name флаг

Код:
Code:
$name = $user->name; // Getting the current user name
но подвох в том что $name нигде не выводится

конечно мы можем вызвать showNice или show из дебаг класса, но вызов то подменить мы можем только один..

в общем я пока сам в тупике, могу скинуть рабочую версию скрипта, если нужно, который прокидывает в $name флаг
 
Ответить с цитированием
 





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ