![image](https://habrastorage.org/webt/r-/mq/l4/r-mql46nvptwmoytomz1peetrvo.jpeg)
Данная статья содержит решений заданий, в которых рассматриваются аутентификация javascript, обфускация javascript и javascript native code.
Организационная информация
Специально для тех, кто хочет узнавать что-то новое и развиваться в любой из сфер информационной и компьютерной безопасности, я буду писать и рассказывать о следующих категориях:
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
- PWN;
- криптография (Crypto);
- cетевые технологии (Network);
- реверс (Reverse Engineering);
- стеганография (Stegano);
- поиск и эксплуатация WEB-уязвимостей.
Вдобавок к этому я поделюсь своим опытом в компьютерной криминалистике, анализе малвари и прошивок, атаках на беспроводные сети и локальные вычислительные сети, проведении пентестов и написании эксплоитов.
Чтобы вы могли узнавать о новых статьях, программном обеспечении и другой информации, я создал канал в Telegram и группу для обсуждения любых вопросов в области ИиКБ. Также ваши личные просьбы, вопросы, предложения и рекомендации рассмотрю лично и отвечу всем.
Вся информация представлена исключительно в образовательных целях. Автор этого документа не несёт никакой ответственности за любой ущерб, причиненный кому-либо в результате использования знаний и методов, полученных в результате изучения данного документа.
HTML disabled elements
![image](https://habrastorage.org/webt/2i/4_/ob/2i4_obei5g68grg-axjqcbjgfda.png)
На странице видим заблокированную форму.
![image](https://habrastorage.org/webt/31/xf/cq/31xfcqzv_sa4xkhdjevoigmiqju.png)
Нам нужно ее разблокировать и использовать. Для этого откроем панель разработчика (в моем случае в браузере Firefox).
![image](https://habrastorage.org/webt/sv/ck/f6/svckf64azuuz9rqrfg2doimxfxa.png)
Наблюдаем два элемента формы, у которых присутствует параметр disabled. Нужно его просто удалить.
![image](https://habrastorage.org/webt/tx/_k/kt/tx_kktfvhqoqh_ht9lueebqfccq.png)
Теперь отправляем какой нибудь текст в форме и получаем флаг.
![image](https://habrastorage.org/webt/ir/qi/er/irqierk4tzjizwsku9fu-er342g.png)
Javascript Authentication
![image](https://habrastorage.org/webt/nr/il/bv/nrilbvhmiwvus-ouyvqdh32zzts.png)
Заходим на страницу, наблюдаем форму, где нужно ввести логин и пароль.
![image](https://habrastorage.org/webt/zp/jj/tn/zpjjtnfs28ydscoww4lxv-scjri.png)
При попытке отправить какие-нибудь строки, alert’ом появляется сообщение о неверных данных.
![image](https://habrastorage.org/webt/-u/h4/ce/-uh4cegjb9lehzcrt89xttfzmrq.png)
Откроем исходный код. При нажатии на кнопку login, вызывается js функция Login().
![image](https://habrastorage.org/webt/jt/ta/4r/jtta4rbjicxl0rqw5vmrd1is1u4.png)
Перейдем в панель разработчика, вкладка Debugger. В левом окне Source выбираем наш сайт и смотрим исходный код в файле login.js. Там присутсвуют данные для входа.
![image](https://habrastorage.org/webt/a2/vo/pa/a2vopawy7hsudqu18iypwk9nek8.png)
Переходим к следующему заданию.
![image](https://habrastorage.org/webt/g9/ew/cm/g9ewcmzr3n9tt3-wxfxeefcs060.png)
Открываем страницу, нас встречает уже привычное окошко ввода пароля.
![image](https://habrastorage.org/webt/ay/cy/6k/aycy6k2j97p41tpkt3wyjcmxzwk.png)
Открываем исходный код, забираем пароль.
![image](https://habrastorage.org/webt/qm/zq/tj/qmzqtjeasbwao3laybcpbsqwyue.png)
Идем дальше.
![image](https://habrastorage.org/webt/lh/ao/fz/lhaofzm16ld3golsuf8qwxq3nsc.png)
По аналогии с предыдущими заданиями, открываем панель разработчика, вкладку Debugger. Из списка извлекается строка, делится на части по знаку двоеточие. Первая часть это логин, вторая — пароль.
![image](https://habrastorage.org/webt/ey/dk/b7/eydkb7uooyp1dk7sgwhd-m735yu.png)
Javascript obfuscation
![image](https://habrastorage.org/webt/kf/wa/7b/kfwa7bfvehewz_x0zs8ycbz4fb4.png)
Открываем исходный код, там находим переменную pass.
![image](https://habrastorage.org/webt/hf/k2/p7/hfk2p7wrcvrgguhg0ojqw4wtzhi.png)
Наш пароль закодирован в URL кодировке. Перейдем в панель разработчика, вкладку Console. Декодируем с помощбю js функции decodeURI().
![image](https://habrastorage.org/webt/st/f6/8o/stf68ougi48nyubcgzfituam0eq.png)
Идем дальше…
![image](https://habrastorage.org/webt/8z/5z/jo/8z5zjocbutgmhle_9ujsbcidpps.png)
Опять смотрим исходники. Упоминается переменная pass.
![image](https://habrastorage.org/webt/jh/cd/w7/jhcdw71jdwuxpafqsuf8lnsibgk.png)
Перейдем в консоль и выведем переменную pass.
![image](https://habrastorage.org/webt/cm/xr/3c/cmxr3cawxq--yri82nguyhcs9vy.png)
Похоже на js код. Чтобы его выполнить, передадим pass в качестве аргумента в функцию eval().
![image](https://habrastorage.org/webt/g0/j8/zu/g0j8zupeqo2nzm1_gaxnin7cid4.png)
Снова код и снова eval().
![image](https://habrastorage.org/webt/d9/0o/gv/d90ogvj1uiovju2p3anklo7q1uu.png)
Javascript native code
![image](https://habrastorage.org/webt/6g/dp/av/6gdpavadpngiqwhpojiu9moeqy8.png)
Открываем страницу. Нас снова встречает окошко ввода пароля.
![image](https://habrastorage.org/webt/z7/3k/3p/z73k3ptve9lvlbingl0katrzxxs.png)
Открываем файл и видим native code javascript.
![image](https://habrastorage.org/webt/fc/t4/d8/fct4d8gogqyqwlrcktomqwqlyjo.png)
В js есть два универсальных метода: toString() и toSource(), применимые к объектам. В самом конце кода наблюдаем “()”, то есть им предшествует функция. В консоле стираем “()” и дописываем “.toSource()”.
![image](https://habrastorage.org/webt/gl/43/0h/gl430hmf0k658tqy3e6_ot7kjnu.png)
Получили функцию проверки пароля, где можем видеть и сам пароль.
![image](https://habrastorage.org/webt/0i/-e/n5/0i-en5pc_tnojt-3ckgooflv0h0.png)
Открываем исходник, получаем js.
![image](https://habrastorage.org/webt/uw/wg/vy/uwwgvyyjkkj92m_zhpwdgodkvuk.png)
В функцию передается строка по типу переменной pass — коды символов, разделенные запятой. В самом конце вызывается функция с какой-то строкой. Давайте декодируем строку и переведем числа в символы.
![image](https://habrastorage.org/webt/vm/cm/dj/vmcmdjt445xlkdlxrluqdfyte8i.png)
Получаем пароль.
Дальше больше и сложнее… Вы можете присоединиться к нам в Telegram. Там можете предлагать свои темы и участвовать в голосовании на выбор темы для следующих статей.
Комментарии (2)
LionisIAm
17.10.2019 08:05Интересные задачки!
Подскажите, пожалуйста, где найти их вводные данные? Условия? Хотелось бы самому попробовать
DmitryKoterov
Здравствуйте, я — *кий вирус. По причине ужасной бедности моего
создателя и низкого уровня развития технологий в нашей стране я не
способен причинить какой-либо вред Вашему компьютеру.
Поэтому очень прошу Вас, пожалуйста, сами сотрите какой-нибудь важный
для Вас файл, а потом разошлите меня по почте другим адресатам. Заранее
благодарю за понимание и сотрудничество!