Инъекция в веб данные)

Тема в разделе "WASM.BEGINNERS", создана пользователем featurelles, 3 апр 2011.

  1. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Добрый день.
    Я делаю инъекцию текста в веб данные на стороне сервера, однако на стороне клиента, в веб браузере данные отправленные сервером отображаются не полностью (данные отображаемые браузером урезаются на длину вставленной строки)
    Это chunked данные.

    Я сохранил вывод wireshark для оригинальной страницы, а также для страницы с произведенной инъекцией (разной длинны).
    А также скрины того, что отображает браузер.

    Если не сложно, посмотрите их...
    Если кто знает? от чего зависит такое поведение браузера? и как мне с этим бороться?
    Что подкорректировать в пакетах, чтоб браузер корректно отображал сформированную мной страницу?

    пароль к архиву
    wireshark_1234_wasm



    http://rapidshare.com/files/455647198/wireshark.zip
     
  2. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    опишите без этих неясных дампов и скриншотов что вы делаете и чего ожидаете
    конкретно что куда идет и как подменяется
     
  3. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    по дампу как минимум видно что последний chunk не отделен от предпоследнего
     
  4. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Неясных дампов????
    .....
    Что я делаю?
    На стороне сервера, где работает apache, произвожу инъекцию данных в веб страницу, которую запрашивает клиент.
    Далее, всё что происходит..видно по скринам и по дампам wireshark которые я выложил.

    Чего ожидаю? ожидаю что веб браузер клиента, отобразит веб страницу(в которую произведена инъекция) полностью! без урезания.(как я и описал в первом посте).. это опятьже видно по выложенным мной скринам.

    Цель этой темы, установить..а точнее узнать. Какие данные и где, в пакетах мне нужно модифицировать, чтоб веб браузер клиента отобразил корректно, всю сформированную мной страницу.
     
  5. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ohne
    Как должно быть?
    Сейчас смотрю inject_data_1.wireshark
    5 пакет, содержит окончание chunk 30 0d 0a 0d 0a

    И также смотрю original_data.wireshark
    6 пакет , содержит окончание chunk 30 0d 0a 0d 0a

    Где косяк?
     
  6. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    каким образом? осталось это еще выяснять по дампам
     
  7. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ohne
    Инъекцию данных произвожу в сетевом стеке, при формировании TCP пакетов)
    Далее отправляю модифицированную страницу клиенту.
     
  8. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    это как раз не интересно,

    интересует больше что вы делаете с raw http ответом, каким образом туда вставляете данные, правильно ли выставляете размеры chunk'ов,
    просто высчитывать размеры чанков и сопоставлять их с указанными вами размерами по дампу как то не очень хочется,
    потому уточняю нет ли ошибки вообще в парсинге ответа
     
  9. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ohne
    Во, это кажется ближе к делу.
    Где должны проставляться размеры chunk'ов ?? (их я какраз не изменял)
     
  10. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    в общих чертах чанкед ответ выглядит так

    //http header
    \r\n
    //http body
    <chunk size>
    \r\n
    <chunk body>
    \r\n
    <chunk size>
    \r\n
    <chunk body>
    \r\n
    ...
    0
    \r\n
    \r\n

    не учитывая имен чанков (они вроде как, согласно спецификации, могут идти после размера (как при multipart data), но обычно такого нет)

    точно так же и с Content-Length, нужно выставлять измененный размер данных в сообщении (если конечно размер изменился)

    http://en.wikipedia.org/wiki/Chunked_transfer_encoding
    http://tools.ietf.org/html/rfc2616#section-3.6.1
     
  11. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ohne
    ОГРОМНОЕ СПАСИБО за ответ.
    Постараюсь завтра утром с этим разобраться. (поищу где именно размер chunk следует изменять)
    Но это уже завтра....
    Кстати, на примере inject_data_2.wireshark
    размер чанка это 5af ? да? (в самом начале передаваемых данных)
    после 5af идёт 0d0a и далее данные.
     
  12. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    именно!
     
  13. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    ohne
    И сейчас тупой вопрос)
    Я указываю размер всей страницы, только в первом передаваемом пакете, а второй пакет уже отправляю без указания размера данной части. И как понимаю, вся страница собирается без проблем. (Такое провидение зависит только от браузера?)... Можно ли обойтись только указанием полного размера страницы в начале?. или обязательно следует указывать новый размер для каждой части сообщения?
     
  14. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    читайте же спецификацию на http 1.0/1.1, браузеры руководствуются только ей
    есть 5 правил расчета длины тела сообщения (если оно вообще есть):
    http://tools.ietf.org/html/rfc2616#section-4.4
     
  15. ohne

    ohne New Member

    Публикаций:
    0
    Регистрация:
    28 фев 2009
    Сообщения:
    431
    ну если перестроить всё тело raw сообщения, то да