Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   Социальные сети (https://forum.antichat.xyz/forumdisplay.php?f=133)
-   -   Крокодил ВКонтакте - анализ багов приложения (https://forum.antichat.xyz/showthread.php?t=191651)

mailbrush 30.03.2010 01:47

Крокодил ВКонтакте - анализ багов приложения
 
Значит так, сегодня решил покопать эту игрушку. Авторы этого приложения не пожалели 35 000 рублей на специальный домен - kroko.vkontakte.ru, хотя 1 миллион пользователей, наверное, оправдывают цену.

Не туда что-то я пошёл, пожалуй, перейду к анализу приложения.
  1. Удлинение хвоста Крокодила на N см.
    Анализируя запросы и исходники Кроко, я увидел, что после выигрыша, отсылается запрос на api.vkontakte.ru, в котром указывается новая длина хвоста. Пример запроса:
    Код:

    http://api.vkontakte.ru/api.php?api_id=1709838&value=1000&sig=a32d41491c2717ee135f4747854c64f2&method=putVariable&random=4831976.466812193&key=1402&test_mode=1
    Поясню список параметров:
    • api_id - ID приложения
    • value - длина хвоста в миллиметрах
    • random - абсолютно случайное число
    • test_mode - тестовый режим. Это позволяет тестировать приложение без загрузки его на сайт.
    • method - название метода API из общего списка функций. putVariable – записывает значение переменной.
    • key - номер переменной, в которой записывается её значение.
    • sig - это именно то, что нам нужно сгенерировать (найти), и над этим придется потрудится. sig - подпись, которая создается в целях безопасности. Параметр sig равен md5 от конкатенации следующих строк:
      • viewer_id – id текущего пользователя, переданный SWF посредством flashvars при инициализации.
      • пар "parameter_name=parameter_value", расположенных в порядке возрастания имени параметра (по алфавиту).
      • секрета приложения api_secret
      Приведу пример: в запросе, который я написал выше, параметр sig равен a32d41491c2717ee135f4747854c64f2, тоесть md5 от
      Код:

      34595285api_id=1709838key=1402method=putVariablerandom=4831976.466812193test_mode=1value=1000api_secret

    Вроде-бы все есть, да только одного нету - секретного ключа приложения. Берем в руки SWF Decompiler, открываем в нем флешку Крокодила (далее - Кроко). Находим интересный класс - Const:
    http://s12.radikal.ru/i185/1003/c2/30c564a24f93.jpg
    Вот и все, секретный ключ приложения у нас: nM27UsOLVI.
    Теперь никакого труда не составит сгенерировать sig, а соответственно послать запрос на увеличение длины хвоста в api.vkontakte.ru

    Делаем md5 следующей строки:
    Код:

    YOUR_IDapi_id=1709838key=1402method=putVariablerandom=4831976.466812193test_mode=1value=LENGTHnM27UsOLVI
    Изменяемые значение выделены и окрашены в оранжевый цвет, а именно:
    • YOUR_ID - ваш ID ВКонтакте.
    • LENGTH - необходимая длина в миллиметрах.

    Получили sig? Отлично. Идем удлинять хвост, переходим по ссылке:
    Код:

    http://api.vkontakte.ru/api.php?api_id=1709838&value=LENGTH&sig=SIG&method=putVariable&random=4831976.466812193&key=1402&test_mode=1
    • LENGTH - необходимая длина хвоста.
      Важно: не должна отличатся от той, что была при генерации sig
    • SIG - полученный sig.

    Обновляем приложение, радуемся :)
    Важно: пользователь, которому изменяется длина хвоста должен быть залогинен ВК

    PS: Тому, кто ничего не понимает в том, что я написал выше написал специальный скрипт, который генерирует ссылку сам: http://hacker.hmarka.net/kroko.php


  2. Экстрасенсорика или узнаем секретное слово
    Эх, моя любопытность :) Берем в руки HTTPAnalyzer (сниффер (перехватчик) запросом. Жмем Start в нем, после чего в приложении нажимаем "Начать игру". Получаем несколько запросов. Первые два - для получения баннеров рекламы, третий - для кроссдомена, а последний - для получения параметров игры.

    http://s43.radikal.ru/i102/1003/49/46e931e89a03.jpg

    Именно он нас интересует. В теле ответа получаем следующее:
    Код:

    <?xml version="1.0"?><response><word>1079,1084,1088,1082,1082,1084,1091,1092</word><presenterPen>24</presenterPen><count>2</count><sessionId>95799079</sessionId><presenterId>34595285</presenterId><playerIds>34595285,19531510</playerIds><timeToStart>14992</timeToStart></response>
    Это ответ в формате XML. То, что между <> и </> - это имя параметра, а то, что между именами - значение. На интересует только одно - word - зашифрованное слово. Но как его расшифровать? Опять берем SWF Decompiler, смотрим функцию расшифровки.

    http://s001.radikal.ru/i195/1003/ce/70ca7a7eca2b.jpg

    Единственным аргументом этой функции является именно этот word. Далее функция преобразовывает эту строку в массив, разбивая её через запятую. Позже создается цикл от 0 и до количества элементов массива минус 5 (5 последних цифр - мусор, который отбрасывается). В самом цикле переменной _loc_2 присваивается значение конкатенации строк _loc_2 и значение элемента массива _loc_3 с индексом _loc_4 минус _loc_4. Вот такая вот защита от "хакеров", но нам это не страшно :) Т.к. все обходится элементарно просто. Если закодирован первый символ был 1079, то его раскодирование = String.fromCharCode(1079 - 0), тоесть String.fromCharCode(1079). Второй был 1084, его раскодировка = String.fromCharCode(1084 - 1), тоесть String.fromCharCode(1083), и так далее, с каждым разом увеличивая _loc_4.

    PS: Кто ничего не понял - юзает мою тулзу http://hacker.hmarka.net/kroko2.php

Ну, вобщем, все...

Если куда-то копируете, ссылку сюда давайте :) И еще мой копирайт :cool:

steyj 30.03.2010 03:32

Нормаль, а может как нибудь для игры в покер чего ни будь создашь? К примеру видеть карты игрока

tiath 30.03.2010 03:34

steyj а хохо не хуху? )))

steyj 30.03.2010 03:43

Можно и такое в каком конверте

GlooK 30.03.2010 04:25

Руки бы оторвать тому кодеру, кто юзает putVariable в приложениях.

netdimarik 30.03.2010 04:40

ну чтоже ждём когда допишут )) а так респект !)

Zyon 30.03.2010 07:54

Стало интересно, вот только приложение пока я это не юзал))

Assembler 30.03.2010 12:11

Молодца, ай молодца. mailbrush по старой дружбе http://vkontakte.ru/app676982 тоже все перерыл именно этот Sig параметр тоже понял что надо сгенерировать но до сих пор не понял какие параметры в него шить. Помоги... Если что кинь в ЛС. Просто если догадаешься как это уже приват инфо в чистом виде...

regau 30.03.2010 12:37

скинь на vkbugs.ru

Assembler 30.03.2010 12:45

Пусть допишет сначала. Потом если захочет сам скинет. Я бы на его месте по другому бы сделал.


Время: 13:14