Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.06.2017, 10:56
Аватар для brizing
Интересующийся
Отправить личное сообщение для brizing Посмотреть профиль Найти все сообщения от brizing
 
Регистрация: 08.02.2014
Сообщений: 23

Создать свой объект document
Доброе утро.

Для конспирации хочу неявно обратиться к document.cookie.
Это можно сделать с помощью JSfuck. Но пока этот способ отложим.

Я посмотрел на document.__proto__, судя по всему, document создан из объекта HTMLDocument, и там есть свойство cookie.
http://i.imgur.com/05mLc5x.png
Можно как-то обратиться к кукам через конструктор HTMLDocument?
Ответить с цитированием
  #2 (permalink)  
Старый 04.06.2017, 12:27
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

brizing, какой конструктор вася) все эти конструкторы HTMLXXXXX показаны тебе только для информации и чтобы можно было instanceof делать, для создания же экземпляра используются методы такие как document.createYYYYY(), а не new HTMLXXXXX(), и в их числе нет такого как .createDocument(). Обращение к свойству cookie на прототипе __proto__ ничего не даст, потому что нужен экземпляр, так как cookie не просто свойство, а сеттер/геттер, т.е. функции, которые внутри себя очевидно проверяют this на этот экземпляр, и всё это нативный код.

Итого: cookie работает только на экземпляре HTMLDocument, экземпляр HTMLDocument создается только браузером, и JSfuck тебе не поможет изменить этого.

Последний раз редактировалось Rise, 04.06.2017 в 12:43.
Ответить с цитированием
  #3 (permalink)  
Старый 04.06.2017, 13:00
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

вы xss нашли? хотите куки воровать?
Ответить с цитированием
  #4 (permalink)  
Старый 04.06.2017, 13:14
Аватар для brizing
Интересующийся
Отправить личное сообщение для brizing Посмотреть профиль Найти все сообщения от brizing
 
Регистрация: 08.02.2014
Сообщений: 23

Rise, точно, конструктора нет.

Посмотрим-ка сюда: http://i.imgur.com/r9GDO4I.png
"TypeError: Illegal invocation" - ошибка возникает когда идёт вызов ф-ии без указания правильного this, например ф-ия из scope без самого scope, log без console, alert без window и т.п. (источник: https://toster.ru/q/268947)

Значит, мы можем позвонить кукам и передать правильный this?
Типа так:
HTMLDocument.prototype.cookie.call(правильный_this)

Не?

j0hnik, с сервера в куки прилетает ключ, а в JS этот ключ дешифруется и если все ок - код выполняется дальше. Благо, код большой, и если спрятать место, в котором используются document.cookie, защита будет почти как у дюрекс.

Последний раз редактировалось brizing, 04.06.2017 в 13:19.
Ответить с цитированием
  #5 (permalink)  
Старый 04.06.2017, 13:17
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Ну через document.createYYYYY() можно создать ифрейм у которого есть экземпляр HTMLXXXXX(), который можно получить но топикстартер явно гвозди микроскопом забивает. И совсем непонятно зачем ему это нужно.
Ответить с цитированием
  #6 (permalink)  
Старый 04.06.2017, 15:02
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

brizing, у сеттер/геттер нет интерфейса вызова в виде скобок (), значит нет и .call() и .apply(), иначе было бы так document.cookie() и document.cookie('value'). Вызов геттера идет обращением к свойству document.cookie, а вызов сеттера присваиванием свойству значения document.cookie = 'value'.

MallSerg, так это разные окна между ними даже идентичные конструкторы не будут равны.

Последний раз редактировалось Rise, 04.06.2017 в 15:07.
Ответить с цитированием
  #7 (permalink)  
Старый 04.06.2017, 15:34
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 4,662

brizing, всё что ты можешь сделать, и как обычно и делается, так это зашифровать имена свойств, ведь обращаться к ним можно в виде строк window['document']['cookie'].
Ответить с цитированием
  #8 (permalink)  
Старый 04.06.2017, 17:01
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

console.log( Object.getOwnPropertyDescriptor(Document.prototype, 'cookie').get.call(document) );
Ответить с цитированием
  #9 (permalink)  
Старый 04.06.2017, 17:34
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

Сообщение от Rise
MallSerg, так это разные окна между ними даже идентичные конструкторы не будут равны.
Именно. основная страница и страница в ифрейме будут исполнятся в разных контекстах и ни одна из страниц не сможет отловить манипуляций с куками на другой странице. а строка с куками будет одинаковой на окнах с одного домена. т.е. читать и изменять будет можно а перехватить чтение или запись будет нельзя.
Ответить с цитированием
  #10 (permalink)  
Старый 04.06.2017, 18:12
Аватар для brizing
Интересующийся
Отправить личное сообщение для brizing Посмотреть профиль Найти все сообщения от brizing
 
Регистрация: 08.02.2014
Сообщений: 23

Всем спасибо.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как создать объект со своими условиями if jtag Общие вопросы Javascript 4 21.02.2016 13:12
ProtoBuf Js Создать объект из proto файла Suharik Prototype & script.aculo.us 2 15.08.2014 13:20
Создать объект в объекте Bryant-24 Общие вопросы Javascript 3 10.07.2013 16:06
Создать объект из строчек Hagrael Events/DOM/Window 16 09.07.2010 10:25
Создать объект динамически Bajjy Общие вопросы Javascript 12 26.09.2008 01:06