1. На проекте открылась регистрация только для продавцов. Для обычных пользователей будет открыта позже. Подробнее.
    P.S. Не надо скидывать ссылки на форумы, где у вас ноль сообщений. Подобные заявки будут отклонятся.
Скрыть объявление
Привет, Незнакомец! У тебя есть возможность Оставить комментарий в теме

Заходим в закрытые комнаты чата Siropu

Тема в разделе "H4X S0FTW4RE", создана пользователем ddd, 10 дек 2015.

  1. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    В паблик пока не выкладываю, надо у нас закрыть + придумать что можно из этого выжать :)
    Фишка простая, нужно добавить куку xf_chatRoom или отредактировать значение на нужное нам, если список чата виден, то ID комнаты видно в списке, в противном случае подбираем.
     
    Fofan, WebGirl, X-Oleg и 2 другим нравится это.
  2. Infoman IPv6

    Infoman
    WebVoice
    Регистрация:
    12 июл 2011
    Сообщения:
    184
    Симпатии:
    86
    Получилось тут в частную - 3 зайти :websmiles_26:

    Можно теперь ботов написать для мониторинга приватных чатов :websmiles_47:
     
    WebGirl и X-Oleg нравится это.
  3. X-Oleg 8айтовый

    X-Oleg
    WebVoice
    Регистрация:
    25 июн 2015
    Сообщения:
    102
    Симпатии:
    62
    Хе, прикольно, т.е. там нет проверки на доступ по группам ?:websmiles_50:
     
  4. X-Oleg 8айтовый

    X-Oleg
    WebVoice
    Регистрация:
    25 июн 2015
    Сообщения:
    102
    Симпатии:
    62
    А-а-а, понял, это что-бы пароль каждый раз не вводить, автор додумался куку сделать, но не сделал проверку вводил-ли автор пароль...:websmiles_11:

    Надо-было уникальный идентификатор генерировать (типо сессии), тогда такого не было-бы !
     
    WebGirl нравится это.
  5. WebGirl 0x16

    WebGirl
    WebVoice
    Регистрация:
    24 июн 2015
    Сообщения:
    19
    Симпатии:
    15
    Ещё один аргумент в копилку против Siropu :websmiles_14:
     
  6. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    Это фишка :)
    На выходных попробую как-нибудь прикольно обыграть эту багу, как делал ранее:
    http://webcriminal.ru/threads/unifikacija-xakerskix-proektov.17385/ (в конце статьи про хайд).
     
    WebGirl нравится это.
  7. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    Как выяснилось бага с кукой появилась в последних версиях, я сравниваю с 1.17.х с 1.20.х
    По моему бага закралась где-то в этом файле(\library\Siropu\Chat\ControllerPublic\Chat.php), пока что не вникал в работу

    1.17.х
    PHP:
        protected function _getRoomID($validate true)
        {
            
    $roomId $this->_input->filterSingle('room_id'XenForo_Input::UINT);

            if (
    $this->_input->filterSingle('embedded'XenForo_Input::UINT))
            {
                return 
    $roomId;
            }

            if (
    $validate && $roomId)
            {
                if (
    $roomIdCookie XenForo_Helper_Cookie::getCookie('chatRoom'))
                {
                    if (
    $roomIdCookie != $roomId)
                    {
                        
    $roomId $roomIdCookie;
                    }
                }
                else if (
    $session $this->_getModel()->getSession($this->_getUID()))
                {
                    
    $roomId $session['user_room_id'];
                    
    $this->_getHelper()->setRoomCookie($roomId);
                }
            }

            return 
    $roomId;
        }

    1.20.х
    PHP:
        protected function _getRoomID($validate true)
        {
            
    $roomReqId $this->_input->filterSingle('room'XenForo_Input::STRING);
            
    $roomId    is_numeric($roomReqId) ? $roomReqId $this->_input->filterSingle('room_id'XenForo_Input::UINT);

            if (
    $this->_input->filterSingle('embedded'XenForo_Input::UINT) && !$roomReqId)
            {
                return 
    $roomId;
            }

            if (
    $validate)
            {
                if (
    $roomIdCookie XenForo_Helper_Cookie::getCookie('chatRoom'))
                {
                    if (
    $roomIdCookie != $roomId)
                    {
                        
    $roomId $roomIdCookie;
                    }
                }
                else if (
    $session $this->_getModel()->getSession($this->_getUID()))
                {
                    
    $roomId $session['user_room_id'];
                    
    $this->_getHelper()->setRoomCookie($roomId);
                }
            }

            return 
    $roomId;
        }
    В этом же файле, в 1.20.х в функции actionIndex() появились следующие переменные:
    PHP:
            $roomId        $this->_getHelper()->getRoomId($session);
            
    $joinRoomId    $this->_input->filterSingle('room'XenForo_Input::STRING);
            
    $navRoomList   $this->_getOptions()->siropu_chat_navigation_rooms;
            
    $navRoomList   $navRoomList array_map('trim'explode(','$navRoomList)) : array();
     
    WebGirl нравится это.
  8. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    В той же функции actionIndex() ниже появилось условие:

    PHP:
            if (is_numeric($joinRoomId) && in_array($joinRoomId$navRoomList))
            {
                if (
    $joinRoomId && ($room $this->_getModel()->getRoomById((int) $joinRoomId)))
                {
                    if (!
    $this->_getHelper()->checkRoomPermissions($room) || $room['room_password'])
                    {
                        return 
    $this->responseError(new XenForo_Phrase('siropu_chat_room_no_permission'));
                    }

                    
    $roomId $joinRoomId;
                }
                else
                {
                    
    $roomId 0;
                }

                
    $this->_getHelper()->setRoomCookie($roomId);
            }
     
    WebGirl нравится это.
  9. X-Oleg 8айтовый

    X-Oleg
    WebVoice
    Регистрация:
    25 июн 2015
    Сообщения:
    102
    Симпатии:
    62
    Чот не пойму, в пхп не селён, но рассуждаю с точки зрения си, итак:

    $validate = true будет постоянно true, так ?

    Далее идём в ветку:

    Код:
     if ($validate)
    {
    if ($roomIdCookie = XenForo_Helper_Cookie::getCookie('chatRoom'))
    {
    if ($roomIdCookie != $roomId)
    {
    $roomId = $roomIdCookie;
    }
    }
    else if ($session = $this->_getModel()->getSession($this->_getUID()))
    {
    $roomId = $session['user_room_id'];
    $this->_getHelper()->setRoomCookie($roomId);
    }
    }
    Короче в зачем эта проверка ?
     
  10. X-Oleg 8айтовый

    X-Oleg
    WebVoice
    Регистрация:
    25 июн 2015
    Сообщения:
    102
    Симпатии:
    62
    Вот и ошибка:

    Нужно так:

    if ($validate && $roomId)

    Смысл в том, что проверка на $roomId тоже нужно, если её не будет, то в ветку не зайдёт и тогда уже не будет брать из куки, я так думаю... :)
     
    WebGirl и ddd нравится это.
  11. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    Да, будет постоянно истиной, пока в функции не переопределится, по этому условие if ($validate) будет всегда выполнятся.
     
    WebGirl нравится это.
  12. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    Общими усилиями было найдено решение, нужно вернуть старое условие
    PHP:
    if ($validate && $roomId)
    в функцию
    PHP:
    protected function _getRoomID($validate true)
    вместо
    PHP:
    if ($validate)
     
    WebGirl, Rufus и X-Oleg нравится это.
  13. ddd (•̪̀●́)=o/̵͇̿̿/'̿̿ ̿ ̿̿

    ddd
    TS
    Команда форума WebOwner WebVoice
    Регистрация:
    5 мар 2007
    Сообщения:
    2.898
    Симпатии:
    191
    ICQ:
    943084
    Переместил тему из раздела WebVoice.
     
  14. X-Oleg 8айтовый

    X-Oleg
    WebVoice
    Регистрация:
    25 июн 2015
    Сообщения:
    102
    Симпатии:
    62
    Фикс от автора плагина:

    Код:
    protected function _getRoomID($validate = true)
        {
            $roomReqId = $this->_input->filterSingle('room', XenForo_Input::STRING);
            $roomId    = is_numeric($roomReqId) ? $roomReqId : $this->_input->filterSingle('room_id', XenForo_Input::UINT);
    
            if ($this->_input->filterSingle('embedded', XenForo_Input::UINT) && !$roomReqId)
            {
                return $roomId;
            }
    
            if ($validate && $roomId != 0)
            {
                $roomId = $this->_getHelper()->getRoomId($this->_getModel()->getSession($this->_getUID()));
            }
    
            return $roomId;
        }
    В целом тоже самое, что и мы сделали, у нас по проще код, ибо сразу понятно:if ($validate && $roomId)

    Т.е. в нашем случае по коду ясно, что вход в ветку будет если все "Истина", или "1", а у автора используется логическое "И", привет мат. логика:

    Т.е. нужно вспоминать таблицу истиности:

    [​IMG]

    В общем тоже самое $validate && $roomId != 0, только в случае если $validate=1 и $roomId=1.

    Будет работать, но я считаю что нужно код делать максимально понятным, что-бы потом самому незапутатся ! :)
     
    WebGirl, Rufus и ddd нравится это.