Крокодил ВКонтакте - анализ багов приложения

Discussion in 'Социальные сети' started by mailbrush, 30 Mar 2010.

  1. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Значит так, сегодня решил покопать эту игрушку. Авторы этого приложения не пожалели 35 000 рублей на специальный домен - kroko.vkontakte.ru, хотя 1 миллион пользователей, наверное, оправдывают цену.

    Не туда что-то я пошёл, пожалуй, перейду к анализу приложения.

    1. Удлинение хвоста Крокодила на N см.
      Анализируя запросы и исходники Кроко, я увидел, что после выигрыша, отсылается запрос на api.vkontakte.ru, в котром указывается новая длина хвоста. Пример запроса:
      Code:
      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 от
        Code:
        34595285api_id=1709838key=1402method=putVariablerandom=4831976.466812193test_mode=1value=1000[COLOR=Red][B]api_secret[/B][/COLOR]

      Вроде-бы все есть, да только одного нету - секретного ключа приложения. Берем в руки SWF Decompiler, открываем в нем флешку Крокодила (далее - Кроко). Находим интересный класс - Const:
      [​IMG]
      Вот и все, секретный ключ приложения у нас: nM27UsOLVI.
      Теперь никакого труда не составит сгенерировать sig, а соответственно послать запрос на увеличение длины хвоста в api.vkontakte.ru

      Делаем md5 следующей строки:
      Code:
      [B][COLOR=DarkOrange]YOUR_ID[/COLOR][/B]api_id=1709838key=1402method=putVariablerandom=4831976.466812193test_mode=1value=[B][COLOR=DarkOrange]LENGTH[/COLOR][/B]nM27UsOLVI
      Изменяемые значение выделены и окрашены в оранжевый цвет, а именно:
      • YOUR_ID - ваш ID ВКонтакте.
      • LENGTH - необходимая длина в миллиметрах.

      Получили sig? Отлично. Идем удлинять хвост, переходим по ссылке:
      Code:
      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 в нем, после чего в приложении нажимаем "Начать игру". Получаем несколько запросов. Первые два - для получения баннеров рекламы, третий - для кроссдомена, а последний - для получения параметров игры.

      [​IMG]

      Именно он нас интересует. В теле ответа получаем следующее:
      Code:
      <?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, смотрим функцию расшифровки.

      [​IMG]

      Единственным аргументом этой функции является именно этот 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:
     
    #1 mailbrush, 30 Mar 2010
    Last edited: 30 Mar 2010
  2. steyj

    steyj New Member

    Joined:
    15 Mar 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Нормаль, а может как нибудь для игры в покер чего ни будь создашь? К примеру видеть карты игрока
     
  3. tiath

    tiath Member

    Joined:
    12 Dec 2009
    Messages:
    0
    Likes Received:
    18
    Reputations:
    0
    steyj а хохо не хуху? )))
     
  4. steyj

    steyj New Member

    Joined:
    15 Mar 2010
    Messages:
    0
    Likes Received:
    1
    Reputations:
    0
    Можно и такое в каком конверте
     
  5. GlooK

    GlooK Elder - Старейшина

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Руки бы оторвать тому кодеру, кто юзает putVariable в приложениях.
     
  6. netdimarik

    netdimarik New Member

    Joined:
    4 May 2009
    Messages:
    23
    Likes Received:
    0
    Reputations:
    0
    ну чтоже ждём когда допишут )) а так респект !)
     
  7. Zyon

    Zyon New Member

    Joined:
    24 Feb 2010
    Messages:
    15
    Likes Received:
    4
    Reputations:
    0
    Стало интересно, вот только приложение пока я это не юзал))
     
  8. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Молодца, ай молодца. mailbrush по старой дружбе http://vkontakte.ru/app676982 тоже все перерыл именно этот Sig параметр тоже понял что надо сгенерировать но до сих пор не понял какие параметры в него шить. Помоги... Если что кинь в ЛС. Просто если догадаешься как это уже приват инфо в чистом виде...
     
  9. regau

    regau Elder - Старейшина

    Joined:
    7 Jun 2009
    Messages:
    0
    Likes Received:
    36
    Reputations:
    16
    скинь на vkbugs.ru
     
  10. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Пусть допишет сначала. Потом если захочет сам скинет. Я бы на его месте по другому бы сделал.
     
  11. BELbIY

    BELbIY Banned

    Joined:
    14 Aug 2009
    Messages:
    0
    Likes Received:
    47
    Reputations:
    -1
    Ух ты сработало спс
     
  12. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Вот от покера

    Видимо два запроса отвечают 21 и 22

    Вот 21


    Вот сам запрос:
    Code:
    http://pokerex.skillclub.com/Entry.ashx?sig=2178f7f2456053709e3962139cf0e368&pid=9830377&method=max&val=70&salt=12378642&uid=9830377&key=21&auth%5Fkey=a34a0154ced6fe1a96e890f6a1517c60
    Вот то что в запросе:
    Sig 2178f7f2456053709e3962139cf0e368 - подпись
    pid 9830377 мой ид
    method max - че делать (метод)
    val 70 - фишки
    salt 12378642 =)
    uid 9830377 мой ид
    key 21 номер запроса
    auth_key a34a0154ced6fe1a96e890f6a1517c60 - ключ авторизации

    Вот 22

    Code:
    http://pokerex.skillclub.com/Entry.ashx?sig=de09d544e9eb1dc5aa6d5fc1c2880b03&pid=9830377&method=setScore&val=70&salt=10059406&uid=9830377&key=22&auth%5Fkey=a34a0154ced6fe1a96e890f6a1517c60
    Sig de09d544e9eb1dc5aa6d5fc1c2880b03 - подпись
    pid 9830377 мой ид
    method setScore - че делать (метод) - Вот тут поставить счет.
    val 70 - фишки
    salt 10059406 =)
    uid 9830377 мой ид
    key 22 номер запроса
    auth_key a34a0154ced6fe1a96e890f6a1517c60 - ключ авторизации - Он кстати одинаковый. Ну это и понятно =)

    Походу тут мд5 + salt =(

    Вот еще можно изменить все свои данные типо имя и т.д.
    Режим Аноним

    Code:
    http://pokerex.skillclub.com/Entry.ashx?sig=d4eac27e295068c606e10de89f9f6a3d&salt=9923647&uid=9830377&method=setLabel&pid=9830377&label=9830377%7C%D0%98%D0%B3%D0%BE%D1%80%D1%91%D0%BA%7C%D0%9B%D0%B8%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C%7C%401cs4398%2E%403%2Fu9830377%2Fc%5Fcc2e1c85%402%7C%401cs4398%2E%403%2Fu9830377%2Fb%5F1fd5d379%402%7C112%7C%7C26%2E1%2E1989%7C%7C%7C2%7C%7C%7C&auth%5Fkey=a34a0154ced6fe1a96e890f6a1517c60
    Sig d4eac27e295068c606e10de89f9f6a3d - подпись
    pid 9830377 мой ид
    method setLabel - че делать (метод) - Вот тут поставить данные о тебе.
    salt 9923647 =)
    uid 9830377 мой ид
    label 9830377%7C%D0%98%D0%B3%D0%BE%D1%80%D1%91%D0%BA%7C%D0%9B%D0%B8%D1%87%D0%BD%D0%BE%D1%81%D1%82%D1%8C%7C%401cs4398%2E%403%2Fu9830377%2Fc%5Fcc2e1c85%402%7C%401cs4398%2E%403%2Fu9830377%2Fb%5F1fd5d379%402%7C112%7C%7C26%2E1%2E1989%7C%7C%7C2%7C%7C%7C - тут данные обо мне
    auth_key a34a0154ced6fe1a96e890f6a1517c60 - ключ авторизации - Он кстати одинаковый. Ну это и понятно =)

    Осталось понять как sig подделать.
     
  13. 7on

    7on New Member

    Joined:
    13 May 2008
    Messages:
    23
    Likes Received:
    1
    Reputations:
    -1
    как открыть флешку в SWF Decompiler
    не получаетса , смотрел видео как делать, у них там появляется в експлорере кнопка, а у меня её нету(((
     
  14. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    https://www.sothink.com/download/swfcatcher.xpi

    Аддон для мозилы.
    Далее в инструменты и щелкай по нему.
     
  15. 7on

    7on New Member

    Joined:
    13 May 2008
    Messages:
    23
    Likes Received:
    1
    Reputations:
    -1
    спс большое, но теперь она у меня сохранилась а там всего 9 кб, и нету конст((
     
  16. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Мда. const есть но secret нет но судя по скрину маил браша че то мы не так делаем. У него название идет не api_wrapper.swf вобщем маилбраш ты где???
     
  17. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Вобщем надо версию SWF Decompiler 5.4 скачивать
    Таблетка


    SWF Decompiler V5.4 build 535
    Name: Registered
    Code: 031U4A-K03QAX-6YDQBB-JTHN2J-2KEUCV-4MNAD0-KT9BVV-QN3B1W-HDJUZA-0AWPT8-6HWBJR-UBZYMK

    Скачать от сюда
    http://www2.sothink.com/download/swfdec.zip
     
    #17 Assembler, 30 Mar 2010
    Last edited: 30 Mar 2010
  18. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Дописал до конца :)

    В школе был.

    ЗЫ: Мб потом поковыряю покер еще...
     
  19. Assembler

    Assembler Elder - Старейшина

    Joined:
    1 Sep 2007
    Messages:
    173
    Likes Received:
    102
    Reputations:
    23
    Маил браш, слух отпиши Мне в личку ID 9830377
     
  20. waik

    waik Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    405
    Likes Received:
    163
    Reputations:
    12
    Старался и оформлял долго,надеюсь ты одобришь. Кпирайт есть!

    хttp://allcheats.ru/t163634/?uri=/t163634-post1942157/#post1942157