<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://course.secsem.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lgeek19</id>
	<title>SecSem Wiki - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://course.secsem.ru/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Lgeek19"/>
	<link rel="alternate" type="text/html" href="https://course.secsem.ru/wiki/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/Lgeek19"/>
	<updated>2026-04-29T19:47:05Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA_%D0%B8_DNS&amp;diff=959</id>
		<title>Сетевая безопасность/Сетевой стек и DNS</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA_%D0%B8_DNS&amp;diff=959"/>
		<updated>2026-03-26T07:20:08Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Рассмотрим, что будет происходить, когда Вы набираете URL в браузере и жмете Enter на примере запроса &amp;quot;google.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=URL или нет?=&lt;br /&gt;
Браузер определяет, что перед ним - URL или поисковый запрос. Если в запросе не получилось выделить протокол или доменное имя, браузер отправляет запрос в поиск, установленный по умолчанию.&lt;br /&gt;
&lt;br /&gt;
==Это URL==&lt;br /&gt;
Поскольку в запросе &amp;quot;google.com&amp;quot; удалось распознать доменное имя, браузер будет обращаться к соответствующему веб-ресурсу. У браузера есть следующая информация (т.к. не указано иное):&lt;br /&gt;
# Использовать протокол HTTPS. Ранее по умолчанию использовался протокол HTTP. Для простоты будем рассматривать сетевое взаимодействие на примере протокола HTTP. О протоколе HTTPS поговорим в разделе о TLS Handshake.&lt;br /&gt;
# Показать главную страницу («/»)&lt;br /&gt;
&lt;br /&gt;
==Проверка HSTS==&lt;br /&gt;
Браузер проверяет, не находится ли сайт в списке preloaded HSTS (HTTP Strict Transport Security). Если да, обращение произойдет по HTTPS.&lt;br /&gt;
&lt;br /&gt;
Сайт может не находиться в списке, но придерживаться политике HSTS, тогда на первый HTTP-запрос от пришлет ответ, содержащий информацию, что к нему требуется обращаться по HTTPS.&lt;br /&gt;
&lt;br /&gt;
=DNS=&lt;br /&gt;
Далее необходимо определить IP-адрес соответствующего веб-ресурса.&lt;br /&gt;
&lt;br /&gt;
Первым делом браузер проверит свой DNS-кэш.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DNS-кэш.png|700px|DNS-кэш]]&lt;br /&gt;
&lt;br /&gt;
Затем браузер вызывает библиотечную функцию gethostbyname. Осуществляется проверка наличия нужной записи в файле hosts.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Содержимое файла hosts.png|500px|Содержимое файла hosts]]&lt;br /&gt;
&lt;br /&gt;
Если не удалось найти нужный адрес в DNS кэше и файле hosts, gethostbyname отправляет ARP-запрос к сетевому DNS-серверу.&lt;br /&gt;
&lt;br /&gt;
Если DNS-сервер, находится в той же подсети, то ARP-запрос отправляется напрямую этому серверу.&lt;br /&gt;
&lt;br /&gt;
Если в другой подсети - запрос отправляется на IP-адрес шлюза по умолчанию (default gateway).&lt;br /&gt;
&lt;br /&gt;
==ARP==&lt;br /&gt;
&lt;br /&gt;
ARP (Address Resolution Protocol) — протокол канального уровня, предназначенный для определения MAC-адреса по IP-адресу.&lt;br /&gt;
&lt;br /&gt;
===Принцип работы===&lt;br /&gt;
* A и B соединены по Ethernet. A известен IP-адрес B. A хочет передать B пакет данных.&lt;br /&gt;
* Задача: узнать MAC-адрес B.&lt;br /&gt;
* Принцип работы: A отправляет broadcast ARP-запрос по сегменту сети: «Хост с IP-адресом &amp;lt;ip_b&amp;gt;, сообщите свой MAC-адрес хосту с MAC-адресом &amp;lt;mac_a&amp;gt;».&lt;br /&gt;
* B получает ARP-запрос и отправляет A ARP-ответ со своим MAC.&lt;br /&gt;
&lt;br /&gt;
==Запрос к DNS-серверу==&lt;br /&gt;
Перед отправкой запроса осуществляется проверка ARP-кэша на предмет наличия нужного IP-адреса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ARP-кэш.png|600px|ARP-кэш]]&lt;br /&gt;
&lt;br /&gt;
После этого проверяется таблица маршрутизации — это делается для того, чтобы узнать, есть ли искомый IP-адрес в какой-либо из подсетей локальной таблицы.&lt;br /&gt;
&lt;br /&gt;
На этом этапе мы знаем MAC-адрес локального DNS-сервера (или DNS-сервера на стороне провайдера)&lt;br /&gt;
&lt;br /&gt;
==DNS lookup==&lt;br /&gt;
По UDP отправляется запрос локальному DNS серверу (на 53 порт).&lt;br /&gt;
&lt;br /&gt;
DNS-сервер возвращает ответ. Если он «не знает» нужный IP, запускается рекурсивный поиск (пока не найдется SOA запись).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dns-lookup.png|600px|DNS lookup]]&lt;br /&gt;
&lt;br /&gt;
==Подробнее про DNS==&lt;br /&gt;
DNS (Domain Name System) - распределенная система для получения информации о доменах (например, получения IP-адреса по имени хоста, получения информации о маршрутизации почты).&lt;br /&gt;
&lt;br /&gt;
===Запись DNS===&lt;br /&gt;
Запись состоит из следующих полей:&lt;br /&gt;
* имя (NAME) - доменное имя&lt;br /&gt;
* тип (TYPE)&lt;br /&gt;
* класс (CLASS) - тип сети. DNS была разработана как система, потенциально совместимая не только с TCP/IP стеком, но и с другими возможными типами сетей. Фактически это поле обычно содержит значение IN (означает Internet), но очень редко встречаются другие классы (см. ссылку в конце статьи).&lt;br /&gt;
* TTL - допустимое время хранения кэшированной записи на DNS-сервере&lt;br /&gt;
* длина поля данных (RDLEN) - содержится в некоторых типах записей&lt;br /&gt;
* поле данных (RDATA) - содержится в некоторых типах записей&lt;br /&gt;
&lt;br /&gt;
===Типы записей===&lt;br /&gt;
* A - связывает имя хоста с адресом протокола IPv4&lt;br /&gt;
* AAAA - связывает имя хоста с адресом протокола IPv6&lt;br /&gt;
* CNAME (canonical name record) - псевдоним, переправление на другое имя&lt;br /&gt;
* MX (mail exchange) - сервер обмена почтой для данного домена&lt;br /&gt;
* NS (name server) - DNS-сервер для данного домена&lt;br /&gt;
* PTR (pointer) - обратная DNS-запись, связывает IP с FQDN&lt;br /&gt;
* SOA (start of authority) - указывает, на каком сервере хранится эталонная информация о данном домене&lt;br /&gt;
&lt;br /&gt;
===DNS клиент===&lt;br /&gt;
DNS клиент - утилита, позволяющая осуществить доступ к системе DNS.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
* nslookup&lt;br /&gt;
* dig&lt;br /&gt;
* Альтернативы с GUI&lt;br /&gt;
&lt;br /&gt;
По умолчанию dig осуществляет поиск записи типа A:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig.png|600px|dig]]&lt;br /&gt;
&lt;br /&gt;
Флаг -t позволяет задать желаемый тип записи:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig -t.png|700px|dig -t]]&lt;br /&gt;
&lt;br /&gt;
Опция +short позволяет опустить всю дополнительную информацию, будет выведен только IP-адрес.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig +short.png|600px|dig +short]]&lt;br /&gt;
&lt;br /&gt;
===Scapy===&lt;br /&gt;
Также можно просто вручную создать UDP-пакет и отправить его на DNS-сервер.&lt;br /&gt;
&lt;br /&gt;
Для этого можно использовать Scapy - библиотеку для манипулирования сетевыми пакетами на языке Python. Она позволяет собрать сетевой пакет по уровням сетевого стека.&lt;br /&gt;
&lt;br /&gt;
====Пример: отправка Ping на google.com====&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ping с помощью Scapy.png|600px|Ping с помощью Scapy]]&lt;br /&gt;
&lt;br /&gt;
Для формирования пакета p необходимо задать тип пакета на уровне протокола ICMP (на самом деле, в случае типа &amp;quot;echo-request&amp;quot; это не обязательно, так как этот тип будет установлен по умолчанию) и адрес получателя на уровне протокола IP.&lt;br /&gt;
&lt;br /&gt;
Далее отправляем пакет с помощью функции sr1, ответ окажется в переменной r.&lt;br /&gt;
&lt;br /&gt;
В результате в r окажется пакет типа echo-reply.&lt;br /&gt;
&lt;br /&gt;
====Пример: DNS запрос====&lt;br /&gt;
&lt;br /&gt;
[[Файл:DNS запрос с посощью Scapy.png|700px|DNS запрос с посощью Scapy]]&lt;br /&gt;
&lt;br /&gt;
Необходимо указать:&lt;br /&gt;
* Для уровня протокола DNS - разрешить рекурсивный поиск (параметр rd) и указать содержимое запроса&lt;br /&gt;
* Для уровня протокола UDP - указать порт (на самом деле, поскольку указан протокол DNS, обращение по умолчанию произойдет на 53 порт, так что достаточно просто обозначить, что обращение должно осуществляться по протоколу UDP, что видно далее в примере)&lt;br /&gt;
* Для уровня протокола IP - адрес локального DNS-сервера&lt;br /&gt;
&lt;br /&gt;
В результате в пакете r получаем DNS-ответ.&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
Исторически сложилось, что DNS разрабатывалась только как распределенная система, поэтому она не защищает пользователя от подмены предоставляемых ему данных.&lt;br /&gt;
&lt;br /&gt;
Пример атаки: DNS cache poisoning - кэш доменных имен изменяется с целью возврата ложного IP-адреса.&lt;br /&gt;
&lt;br /&gt;
DNSSEC - набор расширений DNS, направленный на обеспечение защиты клиентов от фальшивых данных. Все ответы DNSSEC имеют цифровую подпись, используется асимметричное шифрование. &lt;br /&gt;
&lt;br /&gt;
DNSSEC не обеспечивает конфиденциальность данных, осуществляется только аутентификация отправляемых данных, сами данные не шифруются.&lt;br /&gt;
&lt;br /&gt;
===WHOIS===&lt;br /&gt;
WHOIS - протокол прикладного уровня (и одноименная утилита для обращений к нему), базирующийся на протоколе TCP для получения информации о владельцах доменных имен и IP-адресов.&lt;br /&gt;
&lt;br /&gt;
Используется для доступа к публичным серверам баз данных регистраторов IP-адресов и доменных имён.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Whois.png|600px|whois]]&lt;br /&gt;
&lt;br /&gt;
=Установка соединения=&lt;br /&gt;
На этом этапе у нас есть IP-адрес нужного веб ресурса и порт для установки соединения.&lt;br /&gt;
&lt;br /&gt;
Браузер осуществляет вызов функции socket системной библиотеки и запрашивает поток TCP сокета - AF_INET и SOCK_STREAM, формируется пакет для передачи.&lt;br /&gt;
&lt;br /&gt;
==Формирование пакета==&lt;br /&gt;
* Транспортный уровень - собирается TCP-сегмент. В заголовок добавляется порт назначения, исходный порт выбирается из динамического пула ядра.&lt;br /&gt;
* Сетевой уровень - добавляется дополнительный IP-заголовок. Также включаются IP-адрес сервера назначения и адрес текущей машины — после этого пакет сформирован.&lt;br /&gt;
* Канальный уровень - добавляется заголовок кадра, включающий MAC-адрес сетевой карты компьютера, а также MAC-адрес шлюза. Если ядру ничего не известно о MAC-адресе шлюза, то для его нахождения отправляется широковещательный ARP-запрос.&lt;br /&gt;
&lt;br /&gt;
==Отправка пакета==&lt;br /&gt;
По Ethernet/WiFi пакет доберётся до маршрутизатора, управляющего локальной подсетью. Затем он отправится на следующий роутер и т.д., пока не доберётся до сервера назначения. &lt;br /&gt;
&lt;br /&gt;
Каждый маршрутизатор на пути будет извлекать адрес назначения из IP-заголовка и отправлять пакет на следующий хоп, уменьшая TTL. Если значение поля TTL достигнет нуля, пакет будет отброшен (это произойдёт также если у маршрутизатора не будет места в текущей очереди — например, из-за перегрузки сети).&lt;br /&gt;
&lt;br /&gt;
==TCP соединение==&lt;br /&gt;
# Клиент выбирает номер начальной последовательности (ISN) и отправляет пакет серверу с установленным битом SYN для открытия соединения.&lt;br /&gt;
# Сервер получает пакет с битом SYN и, если готов к установлению соединения, то:&lt;br /&gt;
* Выбирает собственный номер начальной последовательности;&lt;br /&gt;
* Устанавливает SYN-бит, чтобы сообщить о выборе начальной последовательности;&lt;br /&gt;
* Копирует ISN клиента +1 в поле ACK и добавляет ACK-флаг для обозначения подтверждения получения первого пакета.&lt;br /&gt;
# Клиент подтверждает соединение путём отправки пакета:&lt;br /&gt;
* Увеличивает номер своей начальной последовательности;&lt;br /&gt;
* Увеличивает номер подтверждения получения;&lt;br /&gt;
* Устанавливает поле ACK.&lt;br /&gt;
# Данные передаются следующим образом:&lt;br /&gt;
* Когда одна сторона отправляет N байтов, то увеличивает значение поля SEQ на это число.&lt;br /&gt;
* Когда вторая сторона подтверждает получение этого пакета (или цепочки пакетов), она отправляет пакет ACK, в котором значение поля ACK равняется последней полученной последовательности.&lt;br /&gt;
# Закрытие соединения:&lt;br /&gt;
* Сторона, которая хочет закрыть соединение, отправляет пакет FIN;&lt;br /&gt;
* Другая сторона подтверждает FIN (с помощью ACK) и отправляет собственный FIN-пакет;&lt;br /&gt;
* Инициатор прекращения соединения подтверждает получение FIN отправкой собственного ACK.&lt;br /&gt;
&lt;br /&gt;
=TLS handshake=&lt;br /&gt;
# Клиентский компьютер отправляет сообщение ClientHello серверу со своей версией протокола TLS, списком поддерживаемых алгоритмов шифрования и методов компрессии данных.&lt;br /&gt;
# Сервер отвечает клиенту сообщением ServerHello, содержащим версию TLS, выбранный метод шифрования, выбранные методы компрессии и публичный сертификат сервиса, подписанный центром сертификации. Сертификат содержит публичный ключ, который будет использоваться клиентом для шифрования оставшейся части процедуры «рукопожатия», пока не будет согласован симметричный ключ.&lt;br /&gt;
# Клиент подтверждает сертификат сервера с помощью своего списка центров сертификации. Если сертификат подписан центром из списка, то серверу можно доверять, и клиент генерирует строку псевдослучайных байтов и шифрует её с помощью публичного ключа сервера. Эти случайные байты могут быть использованы для определения симметричного ключа.&lt;br /&gt;
# Сервер расшифровывает случайные байты с помощью своего секретного ключа и использует эти байты для генерации своей копии симметричного мастер-ключа.&lt;br /&gt;
# Сервер генерирует собственный хеш, а затем расшифровывает полученный от клиента хеш, чтобы проверить, совпадёт ли он с собственным. Если совпадение обнаружено, сервер отправляет клиенту собственный ответ Finished, также зашифрованный симметричным ключом.&lt;br /&gt;
# После этого TLS-сессия передаёт данные приложения (HTTP), зашифрованные с помощью подтверждённого симметричного ключа.&lt;br /&gt;
&lt;br /&gt;
=HTTP=&lt;br /&gt;
* Клиент отправляет серверу HTTP-запрос:&lt;br /&gt;
GET / HTTP/1.1&lt;br /&gt;
Host: google.com&lt;br /&gt;
Connection: close (закрыть соединение по завершении взаимодействия)&lt;br /&gt;
[другие заголовки]&lt;br /&gt;
[пустая строка]&lt;br /&gt;
&lt;br /&gt;
* Сервер отвечает:&lt;br /&gt;
200 OK&lt;br /&gt;
[заголовки ответа]&lt;br /&gt;
[пустая строка]&lt;br /&gt;
[контент HTML-страницы www.google.com]&lt;br /&gt;
и закрывает соединение (так как клиент отправил заголовок Connection: close)&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1_f3Pd5-E-mSsjYm_nZ-Jt16DLAD6Ck-h/view?usp=sharing Презентация]&lt;br /&gt;
* [https://youtu.be/4IBPn7CWB0I Видео]&lt;br /&gt;
* [https://github.com/alex/what-happens-when Еще более подробное описание того, что происходит при обращении по URL]&lt;br /&gt;
* [https://miek.nl/2009/july/31/dns-classes/ О классах записей DNS]&lt;br /&gt;
* [https://scapy.readthedocs.io/en/latest/ Документация Scapy]&lt;br /&gt;
* [http://ccna.mpei.ac.ru/IntroductionToNetworkTech/course/module7/7.2.1.3/7.2.1.3.html Подробнее про установку TCP-соединения]&lt;br /&gt;
* [https://habr.com/ru/post/258285/ Подробнее про TLS handshake]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)&amp;diff=958</id>
		<title>Практикум на ЭВМ (2025)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)&amp;diff=958"/>
		<updated>2026-03-26T07:17:28Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 391 и 392.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам 12:50, &lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 790&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 392, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2025/2026 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [http://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
Доступ к заданиям осуществляется через VPN, доступы к которому можно получить у старосты. &lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2025)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.11.2024 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.11.2024 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.11.2024 23:59)&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/  (deadline - 14.11.2024 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 06.12.2025 23:59)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 06.12.2025 23:59)&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.12.2025 23:43)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [[Media:2025 reverse tasks.zip|Задания по реверсу]] (deadline - 17.12.2025 23:59:59.999999 MSK)&lt;br /&gt;
* [[Media:2025 pwn tasks.zip|Задания по бинарной эксплутации]] (deadline - 23.12.2025 23:59:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 2]  &amp;lt;code&amp;gt;nc fdca:22c8:7316::1 16966&amp;lt;/code&amp;gt;   (deadline - 23.12.2025 23:59:59)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [[Практикум_на_ЭВМ_(2026)/broadcast | broadcast]], [[ Практикум_на_ЭВМ_(2026)/common-sense | common-sense]] (deadline - 30.03.2026 23:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 01.04.2026 23:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (15 сентября 2025) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (22 сентября 2025) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (29 сентября 2025) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (6 октября 2025) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (13 октября 2025) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (20 октября 2025) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (27 октября 2025) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (10 ноября 2025) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (19 февраля 2026) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (26 февраля 2026) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (5 марта 2026) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (19 марта 2026) [[Сетевая_безопасность/Анализ_сетевого_трафика]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (26 марта 2026) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)&amp;diff=957</id>
		<title>Практикум на ЭВМ (2025)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)&amp;diff=957"/>
		<updated>2026-03-19T09:04:35Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 391 и 392.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам 12:50, &lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 790&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 392, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2025/2026 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [http://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
Доступ к заданиям осуществляется через VPN, доступы к которому можно получить у старосты. &lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2025)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.11.2024 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.11.2024 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.11.2024 23:59)&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/  (deadline - 14.11.2024 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 06.12.2025 23:59)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 06.12.2025 23:59)&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 08.12.2025 23:43)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [[Media:2025 reverse tasks.zip|Задания по реверсу]] (deadline - 17.12.2025 23:59:59.999999 MSK)&lt;br /&gt;
* [[Media:2025 pwn tasks.zip|Задания по бинарной эксплутации]] (deadline - 23.12.2025 23:59:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 2]  &amp;lt;code&amp;gt;nc fdca:22c8:7316::1 16966&amp;lt;/code&amp;gt;   (deadline - 23.12.2025 23:59:59)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [[Практикум_на_ЭВМ_(2026)/broadcast | broadcast]], [[ Практикум_на_ЭВМ_(2026)/common-sense | common-sense]] (deadline - 30.03.2026 23:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 01.04.2026 23:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (15 сентября 2025) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (22 сентября 2025) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (29 сентября 2025) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (6 октября 2025) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (13 октября 2025) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (20 октября 2025) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (27 октября 2025) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (10 ноября 2025) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (19 февраля 2026) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (26 февраля 2026) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (5 марта 2026) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (19 марта 2026) [[Сетевая_безопасность/Анализ_сетевого_трафика]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)&amp;diff=911</id>
		<title>Практикум на ЭВМ (2025)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)&amp;diff=911"/>
		<updated>2025-09-23T16:50:53Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 391 и 392.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам 12:50, &lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория ???&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 392, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2025/2026 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2025)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (15 сентября 2025) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (22 сентября 2025) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=910</id>
		<title>Практикум на ЭВМ (2025)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2025)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=910"/>
		<updated>2025-09-23T16:50:35Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «==Формулировка== Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных. В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &amp;#039;&amp;#039;&amp;#039;&amp;quot;users&amp;quot;&amp;#039;&amp;#039;&amp;#039;...»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 12:00 24 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 12:00 24 сентября и 00:00 25 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;00:00 25 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=896</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=896"/>
		<updated>2025-04-10T07:13:36Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 645&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 07.10.2024 23:43)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/  (deadline - 13.11.2024 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 26.11.2024 23:59)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 26.11.2024 23:59)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/19qIXrbhGyFUAHY-fG3pTlpse4GLLRgr7/view?usp=sharing task 1] nc 91.214.70.136 16971 (deadline - 17.12.2024 23:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1Mw_BkNZ-QBkbQrRXLtZLkd3FypMdHp-d/view?usp=sharing task 2] nc 91.214.70.136 16972 (deadline - 17.12.2024 23:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1IhG_OD6BDIS4TA_0QXrNxlRqU0xMcV_R/view?usp=sharing task 3] nc 91.214.70.136 16973 (deadline - 17.12.2024 23:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1KF992P4Vt3i_7Hr2O6qPCxb5GOzPBXK8/view?usp=sharing task 4] nc tasks.prak.seclab.cs.msu.ru 16974 (deadline - 17.12.2024 23:59)&lt;br /&gt;
* [[Media:2024-pwn-tasks.zip |task 5]] nc tasks.prak.seclab.cs.msu.ru 16977 (deadline - 20.12.2024 23:59:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 6] nc tasks.prak.seclab.cs.msu.ru 16966  (deadline - 20.12.2024 23:59:59)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense] (deadline - 20.03.2025 23:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 24.03.2024 23:53)&lt;br /&gt;
* Padding oracle: [http://even.tasks.prak.seclab.cs.msu.ru/ even], [http://bleichenbacher.tasks.prak.seclab.cs.msu.ru/ bleichenbacher] (deadline - 03.04.2025 23:59)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2024) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2024) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (7 октября 2024) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2024) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (21 октября 2024) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (28 октября 2024) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 9 (25 ноября 2024) [[Бинарные_уязвимости/Переполнение_стека | Бинарные_уязвимости/Переполнение_стека_1]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (2 декабря 2024) [[Бинарные_уязвимости/Stack_overflow | Бинарные_уязвимости/Переполнение_стека_2]] [[Бинарные_уязвимости/Off-by-one]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (20 февраля 2025) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (27 февраля 2025) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (6 марта 2025) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (3 апреля 2025) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (10 апреля 2025) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=880</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=880"/>
		<updated>2024-10-30T20:23:01Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 645&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 07.10.2024 23:43)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/  (deadline - 13.11.2024 23:59)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2024) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2024) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2024) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (21 октября 2024) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (28 октября 2024) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=879</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=879"/>
		<updated>2024-10-30T20:22:39Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 645&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 07.10.2024 23:43)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/  (dedline - 13.11.2024 23:59)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2024) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2024) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2024) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (21 октября 2024) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (28 октября 2024) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=877</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=877"/>
		<updated>2024-10-21T09:16:07Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 645&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 07.10.2024 23:43)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2024) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2024) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2024) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (21 октября 2024) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=873</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=873"/>
		<updated>2024-10-14T08:48:05Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 645&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 07.10.2024 23:43)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2024 23:59)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2024) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2024) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2024) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=860</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=860"/>
		<updated>2024-09-16T12:55:45Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 72&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2024)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=859</id>
		<title>Практикум на ЭВМ (2024)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=859"/>
		<updated>2024-09-16T12:53:56Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «==Формулировка== Вам нужно написать маленькое веб-приложение, в котором для хранения данн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 9:00 17 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 9:00 и 21:00 17 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;21:00 17 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=858</id>
		<title>Практикум на ЭВМ (2023)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=858"/>
		<updated>2024-09-16T12:52:55Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 9:00 21 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 9:00 и 21:00 21 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;21:00 21 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=857</id>
		<title>Практикум на ЭВМ (2023)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=857"/>
		<updated>2024-09-16T12:51:18Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 9:00 17 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 9:00 и 21:00 17 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;21:00 17 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=856</id>
		<title>Практикум на ЭВМ (2024)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2024)&amp;diff=856"/>
		<updated>2024-09-15T22:01:23Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «__NOTOC__ &amp;#039;&amp;#039;&amp;#039;Практикум на ЭВМ&amp;#039;&amp;#039;&amp;#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуаль…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 72&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2024/2025 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2024) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2024) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=841</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=841"/>
		<updated>2024-04-11T05:08:48Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 10:30&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 790 или 71&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 17.10.2023 23:43)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 24.10.2023 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 24.10.2023 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 24.10.2023 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://hard.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 31.10.2023 14:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://jpg.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 31.10.2023 14:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://shop.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt;  (dedline - 23.11.2023 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [[Media:2023 reverse tasks.zip|Задания по реверсу]] (deadline - 16.11.2023 23:59:59.999999 MSK)&lt;br /&gt;
* [[Media:2023 pwn tasks.tar.gz|Задания по бинарной эксплутации]] (deadline - 17.12.2023 23:59:59.999999 MSK)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense] (deadline - 1.04.2024 23:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 24.03.2024 23:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (25 сентября 2023) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (2 октября 2023) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (9 октября 2023) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (16 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (23 октября 2020) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (30 октября 2023) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (20 ноября 2022) [[Бинарные_уязвимости/Переполнение_стека]]&lt;br /&gt;
&lt;br /&gt;
Семинар 11 (27 ноября 2022) [[Бинарные_уязвимости/ROP]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (22 февраля 2024) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (29 февраля 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (14 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (4 апреля 2024) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (11 апреля 2024) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0&amp;diff=840</id>
		<title>Сетевая безопасность/Анализ сетевого трафика</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0&amp;diff=840"/>
		<updated>2024-04-11T05:08:06Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Теоретические сведения=&lt;br /&gt;
==TTL==&lt;br /&gt;
* Хоп - переход пакета между двумя маршрутизаторами.&lt;br /&gt;
* TTL - максимальное количество хопов, которое может пройти пакет до своего исчезновения.&lt;br /&gt;
При получении пакета маршрутизатор уменьшает его TTL на 1. Если TTL становится равным 0, пакет уничтожается, а его отправителю посылается пакет ICMP Time Exceeded.&lt;br /&gt;
&lt;br /&gt;
==RTT==&lt;br /&gt;
* RTT (round-trip time) - время, затраченное на отправку пакета + время, которое требуется для подтверждения, что пакет был получен.&lt;br /&gt;
&lt;br /&gt;
=Инструменты для анализа сетевого трафика=&lt;br /&gt;
==Утилита Ping==&lt;br /&gt;
Ping - утилита для проверки целостности и качества соединений в сетях на основе TCP/IP. В работе использует протокол ICMP.&lt;br /&gt;
&lt;br /&gt;
ICMP (Internet Control Message Protocol) - протокол сетевого уровня, в основном используемый для передачи сообщений об ошибках.&lt;br /&gt;
&lt;br /&gt;
Утилита Ping отправляет интересующему узлу пакеты ICMP Echo-Request и фиксирует поступление ответов ICMP Echo-Reply.&lt;br /&gt;
&lt;br /&gt;
===Пример работы===&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 18.01.35.png|600 px|Пример работы утилиты Ping]]&lt;br /&gt;
&lt;br /&gt;
В примере выше отправлены 8 пакетов (желаемое количество пакетов задается флагом -t) на домен google.com.&lt;br /&gt;
Утилита определила соответствующий домену IP адрес и отправила на него заданное количество пакетов.&lt;br /&gt;
&lt;br /&gt;
В результате утилита вывела следующую информацию по каждому отправленному пакету:&lt;br /&gt;
* номер пакета,&lt;br /&gt;
* TTL пакета на момент его получения,&lt;br /&gt;
* RTT пакета.&lt;br /&gt;
&lt;br /&gt;
Также вывод содержит информацию о том, сколько пакетов ICMP Echo-Reply в итоге было получено, процент потерянной информации, минимальное, максимальное и среднее значение RTT и величину среднеквадратического отклонения для RTT.&lt;br /&gt;
&lt;br /&gt;
==Traceroute==&lt;br /&gt;
Traceroute (Tracert в Windows) - утилита, используемая для определения маршрутов следования данных в сетях TCP/IP. В работе может использовать различные протоколы (TCP, UDP, ICMP).&lt;br /&gt;
&lt;br /&gt;
===Принцип работы===&lt;br /&gt;
# На целевой хост отправляется серия пакетов (обычно, 3) с TTL = 1.&lt;br /&gt;
# Первый маршрутизатор, который встретится на пути каждого отправленного пакета, уменьшит TTL на 1. TTL станет равным 0.&lt;br /&gt;
# Маршрутизатор отправит источнику сообщение о том, что пакет не может быть передан далее (сообщая источнику свой IP адрес).&lt;br /&gt;
# На целевой хост отправляется серия пакетов с TTL = 2...&lt;br /&gt;
&lt;br /&gt;
===Пример работы===&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 18.46.07.png|600px|Пример работы Traceroute]]&lt;br /&gt;
&lt;br /&gt;
При вызове Traceroute для домена также будет показан IP адрес, TTL и вес пакетов.&lt;br /&gt;
Для каждого из маршрутизаторов, встретившихся на пути пакетов, указывается&lt;br /&gt;
* Доменное имя, если его удалось получить&lt;br /&gt;
* IP адрес (или адреса, если разные пакеты серии пришли на разные маршрутизаторы)&lt;br /&gt;
* Время доставки для каждого из пакетов&lt;br /&gt;
&lt;br /&gt;
Также вместо информации по одному или нескольким пакетам может быть показан символ &amp;quot;*&amp;quot;. Это означает, чтобы тем или иным причинам отправитель не получил от этого маршрутизатора ICMP Time Exceeded.&lt;br /&gt;
&lt;br /&gt;
Часть возможных причин указана на странице справки traceroute:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-09 в 19.34.21.png|700 px|Справка traceroute]]&lt;br /&gt;
&lt;br /&gt;
==Netcat==&lt;br /&gt;
Netcat (nc, ncat) - утилита, позволяющая устанавливать TCP и UDP соединения, принимать и передавать данные.&lt;br /&gt;
Основные режимы: подключения и прослушивания.&lt;br /&gt;
&lt;br /&gt;
Режим подключения позволяет подключиться к любому порту, открытому на прослушивание (при условии, что порт разрешает подключения такого типа).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 19.10.32.png|900px|Пример работы nc]]&lt;br /&gt;
&lt;br /&gt;
На примере с помощью nc осуществляется подключение к google.com: при вводе nc google.com 80 утилита подключается к серверной стороне по протоколу HTTP (80 - стандартный порт для этого протокола). Далее клиент отправляет на сервер простейший HTTP-запрос &amp;quot;GET /&amp;quot;, в ответ получает соответствующую веб-страницу, которая отображается в терминале в необработанном виде.&lt;br /&gt;
&lt;br /&gt;
Режим прослушивания позволяет открыть на прослушивание сокет на хосте с запущенной утилитой (поставив ему в соответствие порт, к которому смогут обращаться другие приложения). С помощью этого режима можно сделать подобие чата между двумя хостами (например, для передачи данных между двумя виртуальными машинами). Ссылка на демонстрацию приведена в конце статьи.&lt;br /&gt;
&lt;br /&gt;
==Netstat==&lt;br /&gt;
Netstat (Network Statistics) - утилита, позволяющая получить информацию о состоянии TCP-соединений (входящих и исходящих), таблицах маршрутизации, сетевых интерфейсах, сетевой статистике по протоколам.&lt;br /&gt;
&lt;br /&gt;
Для различных ОС реализации данной утилиты отличаются, одни и те же параметры могут отвечать за разные функции. Сводная таблица по ключам есть на английской странице Википедии по Netstat (ссылка приведена в конце статьи).&lt;br /&gt;
&lt;br /&gt;
Ниже - примеры, которые будут работать на большинстве UNIX-систем.&lt;br /&gt;
&lt;br /&gt;
===Примеры работы===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 19.44.29.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* -l - выводит информацию о состоянии всех открытых веб-сокетов (в состоянии LISTEN). По каждому сокету отображается информация о соответствующем ему порте. netstat -lt выведет информацию только о TCP-портах, netstat -lu - только о UDP-портах, netstat -lx - о UNIX-сокетах. Флаги t, u, x можно комбинировать между собой и добавлять ко всем флагам идущим ниже, получая соответствующую фильтрацию.&lt;br /&gt;
* -p - добавить в вывод PID и имя процесса, работающего на конкретном порту&lt;br /&gt;
* -n - отображать адреса и номера портов в числовом формате&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 19.54.47.png|600px|netstat -i]]&lt;br /&gt;
&lt;br /&gt;
* -i - информация о сетевых интерфейсах&lt;br /&gt;
* -ie - расширенная информация, аналог ifconfig&lt;br /&gt;
&lt;br /&gt;
=Tcpdump=&lt;br /&gt;
&lt;br /&gt;
Tcpdump - утилита, позволяющая перехватывать и анализировать сетевой трафик хоста, на котором запущена данная утилита. Также возможен анализ трафика, записанного в файл (*.pcap)&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 20.16.10.png|900px|tcpdump]]&lt;br /&gt;
&lt;br /&gt;
В данном примере используются следующие флаги:&lt;br /&gt;
* -i - перехватывать только пакеты с определенного сетевого интерфейса&lt;br /&gt;
* -с - только заданное количество пакетов&lt;br /&gt;
* -n - отображение в числовом формате&lt;br /&gt;
* -tttt - timestamp-ы в формате дата + время&lt;br /&gt;
* Если требуется собирать трафик, идущий на конкретный порт, его можно задать с помощью настройки port.&lt;br /&gt;
&lt;br /&gt;
Также Tcpdump позволяет задавать множество других настроек: IP-адреса хостов, отправляющих и получающих трафик, конкретные протоколы, параметры пакетов и т.п.&lt;br /&gt;
&lt;br /&gt;
=Wireshark=&lt;br /&gt;
Wireshark - программа для анализа сетевого трафика. По функциональности она аналогична Tcpdump, но имеет графический интерфейс и более широкий спектр возможностей. Также Wireshark поддерживает расширения, написанные на языке Lua.&lt;br /&gt;
&lt;br /&gt;
==Примеры работы==&lt;br /&gt;
Wireshark также позволяет анализировать как получаемый в режиме реального времени, так и записанный в файл трафик.&lt;br /&gt;
&lt;br /&gt;
Трафик можно собирать с использованием фильтров, можно выбрать уже готовый вариант или задать свой. На этом же окне Wireshark показывает, на каких интерфейсах есть сетевая активность.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-11 в 10.35.31.png|600px|Пример записи трафика в Wireshark]]&lt;br /&gt;
&lt;br /&gt;
Wireshark способен определить большинство существующих сетевых протоколов и предоставляет информацию для каждого пакета по всем доступным протоколам с учетом инкапсуляции.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-11 в 15.11.43.png|700px|Трафик Wireshark]]&lt;br /&gt;
&lt;br /&gt;
Также можно просматривать данные не по отдельным пакетам, а целыми стримами (красным обозначаются запросы клиента, синим - ответы сервера). Можно также искать в потоке определенное содержимое, исключать конкретные потоки из общего отображаемого трафика и сохранять содержимое потоков в виде текстовых файлов, в бинарном виде и в других форматах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-11 в 15.16.59.png|700px|Wireshark - отдельный поток]]&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1h7n4APUbXhE3orszvUvhIZ7iqzTXTONZ/view?usp=sharing Презентация]&lt;br /&gt;
* [https://youtu.be/GED6HLt_cPI Видео]&lt;br /&gt;
* [https://habr.com/ru/post/336596/ Шпаргалка по самым простым примерам использования Netcat]&lt;br /&gt;
* [https://youtu.be/PTlgbwfytgw Пример - чат между хостами]&lt;br /&gt;
* [https://overthewire.org/wargames/bandit/bandit0.html Игра на использование nc и других утилит (задания на nc начинаются с уровня 13)]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Netstat#Parameters Сводная таблица по ключам Netstat для различных ОС]&lt;br /&gt;
* [https://putty.org.ru/articles/netstat-linux-examples.html Шпаргалка по Netstat]&lt;br /&gt;
* [https://habr.com/ru/post/204274/ Шпаргалка по Wireshark]&lt;br /&gt;
* [https://habr.com/ru/post/436226/ Еще одна шпаргалка по Wireshark]&lt;br /&gt;
* [https://drive.google.com/file/d/1bKmLE-mcKsR828s6HQUfcruJyIZGpIka/view?usp=sharing Пример с прослушиванием Wi-Fi от Александра Минца]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=838</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=838"/>
		<updated>2024-04-04T05:39:11Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 10:30&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 790 или 71&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом «Безопасность компьютерных систем», который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара — т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате CTF-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько «флагов», выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний («_»).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса &amp;lt;code&amp;gt;main_&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится. Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова — возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 17.10.2023 23:43)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 24.10.2023 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 24.10.2023 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 24.10.2023 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://hard.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 31.10.2023 14:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://jpg.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 31.10.2023 14:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://shop.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt;  (dedline - 23.11.2023 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [[Media:2023 reverse tasks.zip|Задания по реверсу]] (deadline - 16.11.2023 23:59:59.999999 MSK)&lt;br /&gt;
* [[Media:2023 pwn tasks.tar.gz|Задания по бинарной эксплутации]] (deadline - 17.12.2023 23:59:59.999999 MSK)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense] (deadline - 1.04.2024 23:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 24.03.2024 23:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (25 сентября 2023) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (2 октября 2023) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (9 октября 2023) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (16 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (23 октября 2020) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (30 октября 2023) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (20 ноября 2022) [[Бинарные_уязвимости/Переполнение_стека]]&lt;br /&gt;
&lt;br /&gt;
Семинар 11 (27 ноября 2022) [[Бинарные_уязвимости/ROP]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (22 февраля 2024) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (29 февраля 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (4 апреля 2024) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=781</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=781"/>
		<updated>2023-10-15T19:56:28Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Веб */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2023 23:43)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 28.10.2023 14:00)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 28.10.2023 14:00)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (25 сентября 2023) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (2 октября 2023) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (9 октября 2023) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (16 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=780</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=780"/>
		<updated>2023-10-14T10:59:12Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Веб */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2023 23:43)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 28.10.2023 14:00)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 28.10.2023 14:00)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (25 сентября 2023) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (2 октября 2023) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (9 октября 2023) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=779</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=779"/>
		<updated>2023-10-14T10:58:59Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Веб */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2023 23:43)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 28.10.2022 14:00)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 28.10.2022 14:00)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (25 сентября 2023) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (2 октября 2023) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (9 октября 2023) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=778</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=778"/>
		<updated>2023-10-14T10:56:45Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Веб */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 17.10.2023 23:43)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2023 17:13)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (25 сентября 2023) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (2 октября 2023) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (9 октября 2023) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A3%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_FileUpload&amp;diff=777</id>
		<title>Веб-безопасность/Уязвимости FileUpload</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A3%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_FileUpload&amp;diff=777"/>
		<updated>2023-10-14T10:24:43Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Стенды */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Загрузка файлов пользователями&#039;&#039;&#039; - довольно частая часть функциональности веб-приложения (аватарки, хостинг файлов, посылка вложений вместе с сообщениями и т. д.). Небезопасная реализация этого механизма может приводить к очень серьезным уязвимостям.&lt;br /&gt;
Загрузка файлов необходима многим сервисам, таким как файлообменники, социальные сети, онлайн-конверторы и редакторы. &lt;br /&gt;
&lt;br /&gt;
Самый простой способ реализации механизма загрузки файлов - просто создавать на файловой системе сервера файл с таким же содержимым как файл, отправленный пользователем (проще говоря, &amp;quot;класть&amp;quot; присланный пользователем файл куда-то на файловую систему сервера). После загрузки файл либо доступен пользователю по прямой ссылке (т. е. определенные URL-адреса отображаются на загруженные файлы и существует URL, обращение к которому ведет к отдаче загруженного файла), либо как то еще обрабатывается веб-приложением. Само веб-приложение во многом состоит из файлов на диске, поэтому добавление файлов на сервер может быть небезопасным, так как (в общем случае) может изменить логику работы приложения. &lt;br /&gt;
Соответственно, могут появляться следующие уязвимости: &lt;br /&gt;
* Remote Code Execution&lt;br /&gt;
* перезапись или удаление файлов&lt;br /&gt;
* Local File Read, SSRF&lt;br /&gt;
* Denial of Service&lt;br /&gt;
* Information Disclosure&lt;br /&gt;
* XSS&lt;br /&gt;
=PHP=&lt;br /&gt;
PHP (PHP: Hypertext Preprocessor) — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений.&lt;br /&gt;
==Привет, мир!==&lt;br /&gt;
Простейшая программа, выводящая надпись &amp;quot;Привет, мир!&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print(&amp;quot;Привет, мир!&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Каждый скрипт должен начинаться с &amp;lt;code&amp;gt; &amp;lt;?php &amp;lt;/code&amp;gt; и желательно (но не всегда обязательно) на &amp;lt;code&amp;gt; ?&amp;gt; &amp;lt;/code&amp;gt;. Пример кода, где &amp;lt;code&amp;gt; ?&amp;gt; &amp;lt;/code&amp;gt; обязателен:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Наша первая php страница&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;&amp;lt;?php print(&amp;quot;Привет, мир&amp;quot;); ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Переменные==&lt;br /&gt;
В синтаксисе PHP имя переменной записывается латинскими символами, но первым символом всегда должен быть знак доллара $, после чего идёт имя. Не допускается начинать имя переменной с цифры, а также использовать любые значения, кроме букв алфавита и знака подчеркивания.&lt;br /&gt;
&lt;br /&gt;
Правильные переменные:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$age&lt;br /&gt;
$favorite_color&lt;br /&gt;
$name2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Неправильные переменные:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
age&lt;br /&gt;
$42&lt;br /&gt;
$my-age&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Переменные бывают нескольких типов:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$favorite_color = &amp;quot;green&amp;quot;; // строка&lt;br /&gt;
$favorite_number = 42; // целое число&lt;br /&gt;
$favorite_float_number = 0.5; // число с плавающей точкой&lt;br /&gt;
$favorite_bool = true; // boolean&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Числа можно складывать, вычитать, делить, умножать опреаторы стандартные, как и во всех языках: +, -, *, /, % - плюсь, минус, умножить, делить (деление не целочисленное), остаток от деления.&lt;br /&gt;
==Конкатенация==&lt;br /&gt;
Конкатенация - &amp;quot;cклейка&amp;quot; нескольких строчек в одну.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$united_string = &amp;quot;Мой любимый цвет - &amp;quot; . $favorite_color . &amp;quot;, а любимое число - &amp;quot; . $favorite_number;&lt;br /&gt;
print($united_string);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
В коде выше $favorite_number - число. Поэтому данная переменная приводится к типу данных &amp;quot;строка&amp;quot;, после чего уже происходит конкатенация.&lt;br /&gt;
==Ввод данных==&lt;br /&gt;
Данная функциональность редко используется, но нам это нужно было для решения задач на лекии. readline - функция ввода данных:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$line = readline();&lt;br /&gt;
print($line);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Массивы==&lt;br /&gt;
Массив — структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу.&lt;br /&gt;
&lt;br /&gt;
В обычных массивах в PHP индекс значение - целое число. Нумеруются массивы с 0:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$fav_shows = [&amp;quot;game of thrones&amp;quot;, &amp;quot;american horror story&amp;quot;, &amp;quot;walking dead&amp;quot;];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
В ассоциативных массивах в качестве индекса может использоваться не только число. Например, строка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$user = [&#039;age&#039; =&amp;gt; 42, &#039;name&#039; =&amp;gt; &#039;Иннокентий&#039;, &#039;fav_shows&#039; =&amp;gt; [&amp;quot;game of thrones&amp;quot;, &amp;quot;american horror story&amp;quot;, &amp;quot;walking dead&amp;quot;] ];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Условный оператор==&lt;br /&gt;
Синтаксис: if (условие):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($gender == &amp;quot;мужчина&amp;quot;) {&lt;br /&gt;
    print(&amp;quot;Приветствую тебя, мой Господин!&amp;quot;);&lt;br /&gt;
} else if ($gender == &amp;quot;женщина&amp;quot;) {&lt;br /&gt;
    print(&amp;quot;Приветствую тебя, о Госпожа!&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
    print(&amp;quot;Не хватает гендеров.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* оператор присваивания: =&lt;br /&gt;
* операторы сравнения: ==, ===, !=, !==, &amp;gt;, &amp;lt;, &amp;lt;=, &amp;gt;=&lt;br /&gt;
* and, or - логические и и или соответственно&lt;br /&gt;
==Циклы==&lt;br /&gt;
Синтаксис while: while (условие_остановки):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$i = 0;&lt;br /&gt;
while ($i &amp;lt; 10) {&lt;br /&gt;
    print($i);&lt;br /&gt;
    $i = $i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Синтаксис for: for (команда,_выполняемая_до_цикла; условие_осатновки; команда,_выполняемая_в_ конце_каждой_операции):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
for ($x = 0; $x &amp;lt; 10; ++$x) {&lt;br /&gt;
    print($x);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для асоциативных массивах есть цикл foreach:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$user = [&lt;br /&gt;
    &#039;Имя&#039; =&amp;gt; &#039;Евгений&#039;,&lt;br /&gt;
    &#039;Возраст&#039; =&amp;gt; &#039;27&#039;,&lt;br /&gt;
    &#039;Род занятий&#039; =&amp;gt; &#039;Программист&#039;&lt;br /&gt;
];&lt;br /&gt;
foreach ($user as $key =&amp;gt; $value) {&lt;br /&gt;
    print($key . &#039;: &#039;);&lt;br /&gt;
    print($value . &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Функции==&lt;br /&gt;
Синтаксис: имя_функции(аргументы_функции):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
function is_even($number) {&lt;br /&gt;
    if ($number % 2 != 0) {&lt;br /&gt;
        return false;&lt;br /&gt;
    } else {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
if (is_even(3)) {&lt;br /&gt;
    print(&amp;quot;3 - четное число&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
    print(&amp;quot;3 - нечетное число&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Подключение файлов==&lt;br /&gt;
Чтобы не писать всё в одном файле, используется команда require.&lt;br /&gt;
Содержимое файла sub.php:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print(&amp;quot;Привет, я содержимое из sub.php!&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Содержимое файла index.php:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require &#039;sub.php&#039;;&lt;br /&gt;
print(&amp;quot;А я - index.php!&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После подключения sub.php, содержимого этого файла доступно в index.php. Есть также include. Отличия между require() и include() таковы, что require() возвращает FATAL ERROR, если файл не найден, include() же возвращает только WARNING.&lt;br /&gt;
&lt;br /&gt;
==Полезные константы==&lt;br /&gt;
* __DIR__ — полный путь к директории, в которой находится текущий сценарий&lt;br /&gt;
* __FILE__ — полный путь к текущему сценарию&lt;br /&gt;
* $_COOKIE — ассоциативный массив, содержащий куки&lt;br /&gt;
* $_SESSION — ассоциативный массив, содержащий информацию о сессии&lt;br /&gt;
* $_POST — ассоциативный массив, содержащий данные, полученные после POST запроса&lt;br /&gt;
* $_GET — ассоциативный массив, содержащий данные, полученные после GET запроса&lt;br /&gt;
=Примеры=&lt;br /&gt;
1. Пусть есть сайт с формой:&lt;br /&gt;
Клиент:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;HTML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form name=&amp;quot;feedback&amp;quot; method=&amp;quot;POST&amp;quot; action=&amp;quot;form.php&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Ваше имя: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;name&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Ваш email: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;email&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Сообщение: &amp;lt;textarea name=&amp;quot;message&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;send&amp;quot; value=&amp;quot;Отправить&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При получении формы сервером, данные из неё можно получить следующим образом:&lt;br /&gt;
Сервер:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (isset($_POST)) {&lt;br /&gt;
    print(&amp;quot;Имя: &amp;quot; . $_POST[&#039;name&#039;]);&lt;br /&gt;
    print(&amp;quot;&amp;lt;br&amp;gt;Email: &amp;quot; . $_POST[&#039;email&#039;]);&lt;br /&gt;
    print(&amp;quot;&amp;lt;br&amp;gt;Сообщение: &amp;quot; . $_POST[&#039;message&#039;]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
2. Другой пример - отправка формы:&lt;br /&gt;
Клиент:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;HTML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form name=&amp;quot;file_upload&amp;quot; method=&amp;quot;POST&amp;quot; action=&amp;quot;form.php&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Ваш аватар: &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;avatar&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;send&amp;quot; value=&amp;quot;Отправить файл&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Работать с файлом ожно следующим образом:&lt;br /&gt;
Сервер:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (isset($_FILES[&#039;avatar&#039;])) {&lt;br /&gt;
    $file = $_FILES[&#039;avatar&#039;];&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Загружен файл с именем &amp;quot; . $file[&#039;name&#039;] . &amp;quot; и размером &amp;quot; . $file[&#039;size&#039;] . &amp;quot; байт&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Если не переместить файл в постаянную папку - файл будет удален:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$current_path = $_FILES[&#039;avatar&#039;][&#039;tmp_name&#039;];&lt;br /&gt;
$filename = $_FILES[&#039;avatar&#039;][&#039;name&#039;];&lt;br /&gt;
$new_path = dirname(__FILE__) . &#039;/&#039; . $filename;&lt;br /&gt;
&lt;br /&gt;
move_uploaded_file($current_path, $new_path);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=SQL=&lt;br /&gt;
Так же можно работать с базами данных. mysqli_connect - функция для подключения к mysql-серверу, mysqli_query - отправка sql-запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$link = mysqli_connect(&amp;quot;localhost&amp;quot;, &amp;quot;root&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$sql = &#039;INSERT INTO cities SET name = &amp;quot;Санкт-Петербург&amp;quot;&#039;;&lt;br /&gt;
$result = mysqli_query($link, $sql);&lt;br /&gt;
&lt;br /&gt;
if ($result == false) {&lt;br /&gt;
    print(&amp;quot;Произошла ошибка при выполнении запроса&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=web shell=&lt;br /&gt;
&lt;br /&gt;
Простейшим примером является загрузка файла с расширением .php на сайт, работающий на PHP (в качестве проверки можно попробовать обратиться по адресу &#039;&#039;&#039;cite.com/index.php&#039;&#039;&#039; и не получить ошибки). По умолчанию PHP-сайты работают так что пользователь обращается по URL к файлу (URL сайта, начиная с первого /, отображаются на определенную директорию на сервере, она называется &#039;&#039;&#039;web root&#039;&#039;&#039;) и, если этот файл имеет расширение php (или другое расширение из предопределенного списка расширений для PHP-файлов), то содержимое этого файла выполняется как код на PHP, вывод этого кода возвращается пользователю в ответе (кстати, так работает не только PHP, но и ASP.NET Web Forms, JSP, ASP). В результате, если пользователь может загрузить на сайт файл c расширением .php и обратиться к нему по URL (т. е. этот файл будет создан где-то внутри &#039;&#039;&#039;web root&#039;&#039;&#039;), то, если сервер специально не настроен чтобы файлы из директории для загрузок не выполнялись, PHP-код в нём будет выполнен. Соответственно, загрузив на уязвимый сайт файл &amp;lt;code&amp;gt;shell.php&amp;lt;/code&amp;gt; с кодом &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
42 * 66613;&lt;br /&gt;
&amp;lt;?php system(&#039;ls -lsa&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
и, получив ссылку на него (к примеру, /uploads/5c8e82bb8ad66/attack.php), обратится по ней, то в результате этот PHP-код выполнится и в ответе сервера будет &lt;br /&gt;
произведение чисел 42 и 66613, а также список всех файлов в длинном формате (функция PHP system работает так же как одноимённая функция библиотеки Си - то есть выполняет команду shell). В итоге атакующий получает выполнение произвольного кода на сервере (RCE).&lt;br /&gt;
&lt;br /&gt;
=Обход методов защиты и атака=&lt;br /&gt;
&lt;br /&gt;
==Валидация имени файла==&lt;br /&gt;
&lt;br /&gt;
===Черный список ресширений===&lt;br /&gt;
Обходится с помощью использования двойных расширений (&amp;lt;code&amp;gt;shell.php.png&amp;lt;/code&amp;gt;) или  малоизвестный расширений (&amp;lt;code&amp;gt;.php5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.phtml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.shtml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt;). Кроме того, возможна инъекция нулевого байта (&amp;lt;code&amp;gt;shell.php%00.jpg&amp;lt;/code&amp;gt;) или регистрозависимость при проверке (&amp;lt;code&amp;gt;PHp3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aSp&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
===Белый список расширений===&lt;br /&gt;
Спасает от использования атакующим малоизвестных и регистрозависимых расширений, но все ещё обходится с помощью двойных расширений или инъекции нулевого байта. &lt;br /&gt;
&lt;br /&gt;
===Санитайзеры===&lt;br /&gt;
Оставляет большую степень свободы. Например, если санитайзер удаляет вхождения подстрок типа &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, то использования имени файла вида &amp;lt;code&amp;gt;shell.p&#039;&#039;&#039;.php&#039;&#039;&#039;hp&amp;lt;/code&amp;gt; позволяет после загрузки получить файл с именем &amp;lt;code&amp;gt;shell.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Валидация Content-Type==&lt;br /&gt;
Обходится изменением заголовка Content-Type, например, с помощью перехватывающего прокси (burp suite). Соответсвенно, в запросе &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST / HTTP/1.1&lt;br /&gt;
Host: easy.fu.khashaev.ru&lt;br /&gt;
Content-Length: 200&lt;br /&gt;
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary&lt;br /&gt;
------WebKitFormBoundary&lt;br /&gt;
Content-Disposition: form-data; name=&amp;quot;file&amp;quot;; filename=&amp;quot;info.php&amp;quot;&lt;br /&gt;
Content-Type: text/php&lt;br /&gt;
 &amp;lt;?php phpinfo(); ?&amp;gt;&lt;br /&gt;
------WebKitFormBoundary--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
строчка &amp;lt;code&amp;gt;Content-Type: text/php&amp;lt;/code&amp;gt; может быть заменена на строчку &amp;lt;code&amp;gt;Content-Type: image/png&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==Прочее==&lt;br /&gt;
&#039;&#039;&#039;.htaccess&#039;&#039;&#039; - конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server Side Includes&#039;&#039;&#039; - язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Имеет расширения .shtml, .stm или .shtm. Например, при загрузке и вызове &#039;&#039;&#039;file.shtml&#039;&#039;&#039;, содержащего код &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!-- #exec cmd=&amp;quot;ls&amp;quot; --&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
атакующему будет выведен список файлов данной директории. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static HTML&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
При возможности загрузить на сервис статический HTML, создается HTML-страница, содержащая  вредоносный код (например, крадущего cookie), и ссылка на этот файл отправляется жертве. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Path Traversal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Атака, основанная на использовании специфически составленных имен файлов (например, &amp;lt;code&amp;gt;../config.ini&amp;lt;/code&amp;gt;), позволяющих выйти за пределы директории хранения файлов. Может привести к переписыванию исходных фалов веб-приложения, конфигурационных или системных файлов. &lt;br /&gt;
Атака возможна, если не используется функция &amp;lt;code&amp;gt;basename&amp;lt;/code&amp;gt; (возвращает последний компонент имени из указанного пути) или её аналог. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filename XSS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Сервис уязвим к XSS, если допускается имя файла вида &amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Полиглоты==&lt;br /&gt;
Полиглотами называют файлы, которые могут быть корректно распознаны как файлы разных типов. &lt;br /&gt;
Можно встраивать &lt;br /&gt;
* JavaScript в JPEG, GIF, PNG, PDF&lt;br /&gt;
* HTML в что-нибудь &lt;br /&gt;
* PHP в [https://rdot.org/forum/showthread.php?t=2780 JPEG ], [https://github.com/fakhrizulkifli/Defeating-PHP-GD-imagecreatefromgif GIF], [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/ PNG]&lt;br /&gt;
&lt;br /&gt;
===Структура JPEG===&lt;br /&gt;
Все jpeg-файлы имеют схожую структуру. Рассмотрим в качестве примера изображение&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mini.jpg|128px]]&lt;br /&gt;
 &lt;br /&gt;
В hex-редакторе оно выглядит следующим образом &lt;br /&gt;
&lt;br /&gt;
[[Файл:Hex_print.png]]&lt;br /&gt;
&lt;br /&gt;
В структуре jpeg-файлов содержатся служебные маркеры, состоящие из двух байт и всегда начинающиеся с FF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FF D8&#039;&#039;&#039; - маркер начала jpeg-файла;&lt;br /&gt;
* &#039;&#039;&#039;FF DA&#039;&#039;&#039; - маркер начала секции Start of Scan:&lt;br /&gt;
** в двух байтах хранится длинна заголовка изображения [00 0C];&lt;br /&gt;
** заголовок изображения [03 01 00 02 11 03 11 00 3F 00];&lt;br /&gt;
** непосредственно информацию о самом изображении;&lt;br /&gt;
* &#039;&#039;&#039;FF D9&#039;&#039;&#039; - маркер конца jpeg-файла.&lt;br /&gt;
&lt;br /&gt;
=Image Magic=&lt;br /&gt;
&#039;&#039;&#039;ImageMagick&#039;&#039;&#039; — набор программ для чтения и редактирования файлов множества графических форматов, свободное и кроссплатформенное ПО. Может использоваться с языками Perl, C, C++, Python, Ruby, PHP, Node.js, Pascal, Java, Delphi, в скриптах командной оболочки или самостоятельно.&lt;br /&gt;
ImageMagick обладает широким набором возможностей (конвертация, маскирование, увеличение контрастности и т.п.) и поддерживает работу с различными типами файлов, но так же в нем находили различные уязвимости:&lt;br /&gt;
* RCE [CVE-2016-3714]&lt;br /&gt;
* SSRF [CVE-2016-3718]&lt;br /&gt;
* File deletion [CVE-2016-3715]&lt;br /&gt;
* File moving [CVE-2016-3716]&lt;br /&gt;
* Local File Read [CVE-2016-3717]&lt;br /&gt;
CVE - Common Vulnerabilities and Exposures - база данных общеизвестных уязвимостей информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
Был создан сайт [https://imagetragick.com/ ImageTragick], посвященный описанию некоторых уязвимостей ImageMagic. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Допустим, что есть некоторый онлайн-сервис, позволяющих переводить файлы в разные форматы, использующий библиотеку ImageMagic. &lt;br /&gt;
Тогда, создав файл exploit.mvg с содержанием&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
push graphic-context&lt;br /&gt;
viewbox 0 0 640 480&lt;br /&gt;
fill &#039;url(https://example.com/&lt;br /&gt;
image.jpg &amp;quot; ; | ls  &amp;quot;-la)&#039;&lt;br /&gt;
pop graphic-context&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
и выполнив запрос на преобразование файла, аналогичный команде &lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert exploit.mvg out.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
атакующий получит список всех файлов директории.&lt;br /&gt;
&lt;br /&gt;
=Стенды=&lt;br /&gt;
Внимание: сначала определите, в какой директории лежит файл.&lt;br /&gt;
* http://easy.stands.prak.seclab.cs.msu.ru (Создайте php-файл с web shell одним из способов, описанных в презентации. Загрузите его на сайт. Перейдите по ссылке для просмотра изображения и получите флаг с помощью web shell-а).&lt;br /&gt;
* http://type.stands.prak.seclab.cs.msu.ru (Подключите Burp suite. Загрузите web shell. Перехватите запрос к серверу и замените Content type, соответствующий изображению.)&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1Jep20CuBfcfKAeStwnHgR0gCf-O2Wgd0/view?usp=sharing Презентация]&lt;br /&gt;
* [https://disk.yandex.ru/i/iyE_cBCrH2VWUg Видео]&lt;br /&gt;
* [https://www.php.net/ https://www.php.net/] - сайт PHP&lt;br /&gt;
* [https://htmlacademy.ru/tutorial/php https://htmlacademy.ru/tutorial/php] - учебник PHP&lt;br /&gt;
* [http://www.php.su/php/?php http://www.php.su/php/?php] - ещё один учебник&lt;br /&gt;
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo15.pdf Полиглоты]&lt;br /&gt;
* [https://drive.google.com/file/d/1Rz0RP5tKIWCmFDP3-_--VYu40ejWf48v/view?usp=sharing Валидация структурных типов]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=770</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=770"/>
		<updated>2023-09-24T15:33:59Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=769</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=769"/>
		<updated>2023-09-20T11:31:37Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2023)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=768</id>
		<title>Практикум на ЭВМ (2023)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=768"/>
		<updated>2023-09-20T11:31:01Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Добавлена страница допзадания для семестра 2023 года&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 9:00 21 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 9:00 и 21:00 21 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;21:00 21 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=767</id>
		<title>Практикум на ЭВМ (2023)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2023)&amp;diff=767"/>
		<updated>2023-09-17T18:56:50Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «__NOTOC__ &amp;#039;&amp;#039;&amp;#039;Практикум на ЭВМ&amp;#039;&amp;#039;&amp;#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуаль…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 706&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2023/2024 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (11 сентября 2023) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (18 сентября 2023) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=755</id>
		<title>Практикум на ЭВМ (2022)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=755"/>
		<updated>2023-04-16T07:26:51Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 604&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2022)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 11.10.2022 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2022 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 31.10.2022 23:59)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 31.10.2022 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/19qIXrbhGyFUAHY-fG3pTlpse4GLLRgr7/view?usp=sharing task 1] nc 91.214.70.136 16971 (deadline - 04.12.2022 18:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1Mw_BkNZ-QBkbQrRXLtZLkd3FypMdHp-d/view?usp=sharing task 2] nc 91.214.70.136 16972 (deadline - 04.12.2022 18:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1IhG_OD6BDIS4TA_0QXrNxlRqU0xMcV_R/view?usp=sharing task 3] nc 91.214.70.136 16973 (deadline - 04.12.2022 18:00)&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1KF992P4Vt3i_7Hr2O6qPCxb5GOzPBXK8/view?usp=sharing task 4] nc tasks.prak.seclab.cs.msu.ru 16974 (deadline - 12.12.2022 18:00)&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1ENAVVDKlKIGgELZh6sCaP1wJ4SiOAYwz/view?usp=sharing task 5] nc tasks.prak.seclab.cs.msu.ru 16965 (deadline - 24.12.2022 23:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 6] nc tasks.prak.seclab.cs.msu.ru 16966  (deadline - 24.12.2022 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense]&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 17.04.2023 1:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (12 сентября 2022) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (19 сентября 2022) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (26 сентября 2022) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (3 октября 2022) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (10 октября 2022) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (17 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (24 октября 2022) [[Веб-безопасность/Уязвимости XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (7 ноября 2022) Бинарные_уязвимости&lt;br /&gt;
&lt;br /&gt;
Семинар 9 (14 ноября 2022) [[Бинарные_уязвимости/Stack_overflow]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (21 ноября 2022) [[Бинарные_уязвимости/Off-by-one]]&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
Семинар 12 декабря 2022 [[Уязвимости_мобильных_приложений/Уязвимости]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* Семинар 1 (16 февраля 2021) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
* Семинар 2 (2 марта 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
* Семинар 4 (16 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (6 апреля 2023) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (13 апреля 2023) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=753</id>
		<title>Практикум на ЭВМ (2022)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=753"/>
		<updated>2023-04-08T06:34:21Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 604&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2022)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 11.10.2022 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://shop.tasks.prak.seclab.cs.msu.ru/ (deadline - 22.10.2022 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 31.10.2022 23:59)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 31.10.2022 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/19qIXrbhGyFUAHY-fG3pTlpse4GLLRgr7/view?usp=sharing task 1] nc 91.214.70.136 16971 (deadline - 04.12.2022 18:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1Mw_BkNZ-QBkbQrRXLtZLkd3FypMdHp-d/view?usp=sharing task 2] nc 91.214.70.136 16972 (deadline - 04.12.2022 18:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1IhG_OD6BDIS4TA_0QXrNxlRqU0xMcV_R/view?usp=sharing task 3] nc 91.214.70.136 16973 (deadline - 04.12.2022 18:00)&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1KF992P4Vt3i_7Hr2O6qPCxb5GOzPBXK8/view?usp=sharing task 4] nc tasks.prak.seclab.cs.msu.ru 16974 (deadline - 12.12.2022 18:00)&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1ENAVVDKlKIGgELZh6sCaP1wJ4SiOAYwz/view?usp=sharing task 5] nc tasks.prak.seclab.cs.msu.ru 16965 (deadline - 24.12.2022 23:59)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 6] nc tasks.prak.seclab.cs.msu.ru 16966  (deadline - 24.12.2022 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense]&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|Задание на блочные шифры]] (deadline - 17.04.2023 1:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (12 сентября 2022) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (19 сентября 2022) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (26 сентября 2022) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (3 октября 2022) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (10 октября 2022) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (17 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (24 октября 2022) [[Веб-безопасность/Уязвимости XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (7 ноября 2022) Бинарные_уязвимости&lt;br /&gt;
&lt;br /&gt;
Семинар 9 (14 ноября 2022) [[Бинарные_уязвимости/Stack_overflow]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (21 ноября 2022) [[Бинарные_уязвимости/Off-by-one]]&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
Семинар 12 декабря 2022 [[Уязвимости_мобильных_приложений/Уязвимости]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* Семинар 1 (16 февраля 2021) [[Криптография/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
* Семинар 2 (2 марта 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
* Семинар 4 (16 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (6 апреля 2023) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=705</id>
		<title>Практикум на ЭВМ (2022)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=705"/>
		<updated>2022-11-08T20:18:18Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 604&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2022)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 11.10.2022 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline -  19.10.2022 0:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline -  19.10.2022 0:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline -  19.10.2022 0:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://hard.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 31.10.2022 23:59)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://jpg.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 31.10.2022 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (12 сентября 2022) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (19 сентября 2022) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (26 сентября 2022) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (3 октября 2022) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (10 октября 2022) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (17 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (24 октября 2022) [[Веб-безопасность/Уязвимости XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=701</id>
		<title>Практикум на ЭВМ (2022)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=701"/>
		<updated>2022-10-17T05:33:18Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 604&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2022)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 11.10.2022 23:59)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline -  19.10.2022 0:53)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru (deadline - 31.10.2022 23:59)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru (deadline - 31.10.2022 23:59)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (12 сентября 2022) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (19 сентября 2022) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (26 сентября 2022) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (3 октября 2022) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (10 октября 2022) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (17 октября 2022) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A3%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_FileUpload&amp;diff=700</id>
		<title>Веб-безопасность/Уязвимости FileUpload</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A3%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8_FileUpload&amp;diff=700"/>
		<updated>2022-10-17T05:30:38Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Введение=&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Загрузка файлов пользователями&#039;&#039;&#039; - довольно частая часть функциональности веб-приложения (аватарки, хостинг файлов, посылка вложений вместе с сообщениями и т. д.). Небезопасная реализация этого механизма может приводить к очень серьезным уязвимостям.&lt;br /&gt;
Загрузка файлов необходима многим сервисам, таким как файлообменники, социальные сети, онлайн-конверторы и редакторы. &lt;br /&gt;
&lt;br /&gt;
Самый простой способ реализации механизма загрузки файлов - просто создавать на файловой системе сервера файл с таким же содержимым как файл, отправленный пользователем (проще говоря, &amp;quot;класть&amp;quot; присланный пользователем файл куда-то на файловую систему сервера). После загрузки файл либо доступен пользователю по прямой ссылке (т. е. определенные URL-адреса отображаются на загруженные файлы и существует URL, обращение к которому ведет к отдаче загруженного файла), либо как то еще обрабатывается веб-приложением. Само веб-приложение во многом состоит из файлов на диске, поэтому добавление файлов на сервер может быть небезопасным, так как (в общем случае) может изменить логику работы приложения. &lt;br /&gt;
Соответственно, могут появляться следующие уязвимости: &lt;br /&gt;
* Remote Code Execution&lt;br /&gt;
* перезапись или удаление файлов&lt;br /&gt;
* Local File Read, SSRF&lt;br /&gt;
* Denial of Service&lt;br /&gt;
* Information Disclosure&lt;br /&gt;
* XSS&lt;br /&gt;
=PHP=&lt;br /&gt;
PHP (PHP: Hypertext Preprocessor) — скриптовый язык общего назначения, интенсивно применяемый для разработки веб-приложений.&lt;br /&gt;
==Привет, мир!==&lt;br /&gt;
Простейшая программа, выводящая надпись &amp;quot;Привет, мир!&amp;quot;:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php print(&amp;quot;Привет, мир!&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Каждый скрипт должен начинаться с &amp;lt;code&amp;gt; &amp;lt;?php &amp;lt;/code&amp;gt; и желательно (но не всегда обязательно) на &amp;lt;code&amp;gt; ?&amp;gt; &amp;lt;/code&amp;gt;. Пример кода, где &amp;lt;code&amp;gt; ?&amp;gt; &amp;lt;/code&amp;gt; обязателен:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
  &amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Наша первая php страница&amp;lt;/title&amp;gt;&lt;br /&gt;
  &amp;lt;/head&amp;gt;&lt;br /&gt;
  &amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1&amp;gt;&amp;lt;?php print(&amp;quot;Привет, мир&amp;quot;); ?&amp;gt;&amp;lt;/h1&amp;gt;&lt;br /&gt;
  &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Переменные==&lt;br /&gt;
В синтаксисе PHP имя переменной записывается латинскими символами, но первым символом всегда должен быть знак доллара $, после чего идёт имя. Не допускается начинать имя переменной с цифры, а также использовать любые значения, кроме букв алфавита и знака подчеркивания.&lt;br /&gt;
&lt;br /&gt;
Правильные переменные:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$age&lt;br /&gt;
$favorite_color&lt;br /&gt;
$name2&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Неправильные переменные:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
age&lt;br /&gt;
$42&lt;br /&gt;
$my-age&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Переменные бывают нескольких типов:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$favorite_color = &amp;quot;green&amp;quot;; // строка&lt;br /&gt;
$favorite_number = 42; // целое число&lt;br /&gt;
$favorite_float_number = 0.5; // число с плавающей точкой&lt;br /&gt;
$favorite_bool = true; // boolean&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Числа можно складывать, вычитать, делить, умножать опреаторы стандартные, как и во всех языках: +, -, *, /, % - плюсь, минус, умножить, делить (деление не целочисленное), остаток от деления.&lt;br /&gt;
==Конкатенация==&lt;br /&gt;
Конкатенация - &amp;quot;cклейка&amp;quot; нескольких строчек в одну.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$united_string = &amp;quot;Мой любимый цвет - &amp;quot; . $favorite_color . &amp;quot;, а любимое число - &amp;quot; . $favorite_number;&lt;br /&gt;
print($united_string);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
В коде выше $favorite_number - число. Поэтому данная переменная приводится к типу данных &amp;quot;строка&amp;quot;, после чего уже происходит конкатенация.&lt;br /&gt;
==Ввод данных==&lt;br /&gt;
Данная функциональность редко используется, но нам это нужно было для решения задач на лекии. readline - функция ввода данных:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$line = readline();&lt;br /&gt;
print($line);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Массивы==&lt;br /&gt;
Массив — структура данных, хранящая набор значений (элементов массива), идентифицируемых по индексу.&lt;br /&gt;
&lt;br /&gt;
В обычных массивах в PHP индекс значение - целое число. Нумеруются массивы с 0:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$fav_shows = [&amp;quot;game of thrones&amp;quot;, &amp;quot;american horror story&amp;quot;, &amp;quot;walking dead&amp;quot;];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
В ассоциативных массивах в качестве индекса может использоваться не только число. Например, строка:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$user = [&#039;age&#039; =&amp;gt; 42, &#039;name&#039; =&amp;gt; &#039;Иннокентий&#039;, &#039;fav_shows&#039; =&amp;gt; [&amp;quot;game of thrones&amp;quot;, &amp;quot;american horror story&amp;quot;, &amp;quot;walking dead&amp;quot;] ];&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Условный оператор==&lt;br /&gt;
Синтаксис: if (условие):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
if ($gender == &amp;quot;мужчина&amp;quot;) {&lt;br /&gt;
    print(&amp;quot;Приветствую тебя, мой Господин!&amp;quot;);&lt;br /&gt;
} else if ($gender == &amp;quot;женщина&amp;quot;) {&lt;br /&gt;
    print(&amp;quot;Приветствую тебя, о Госпожа!&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
    print(&amp;quot;Не хватает гендеров.&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
* оператор присваивания: =&lt;br /&gt;
* операторы сравнения: ==, ===, !=, !==, &amp;gt;, &amp;lt;, &amp;lt;=, &amp;gt;=&lt;br /&gt;
* and, or - логические и и или соответственно&lt;br /&gt;
==Циклы==&lt;br /&gt;
Синтаксис while: while (условие_остановки):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$i = 0;&lt;br /&gt;
while ($i &amp;lt; 10) {&lt;br /&gt;
    print($i);&lt;br /&gt;
    $i = $i + 1;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Синтаксис for: for (команда,_выполняемая_до_цикла; условие_осатновки; команда,_выполняемая_в_ конце_каждой_операции):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
for ($x = 0; $x &amp;lt; 10; ++$x) {&lt;br /&gt;
    print($x);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Для асоциативных массивах есть цикл foreach:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$user = [&lt;br /&gt;
    &#039;Имя&#039; =&amp;gt; &#039;Евгений&#039;,&lt;br /&gt;
    &#039;Возраст&#039; =&amp;gt; &#039;27&#039;,&lt;br /&gt;
    &#039;Род занятий&#039; =&amp;gt; &#039;Программист&#039;&lt;br /&gt;
];&lt;br /&gt;
foreach ($user as $key =&amp;gt; $value) {&lt;br /&gt;
    print($key . &#039;: &#039;);&lt;br /&gt;
    print($value . &#039;&amp;lt;br&amp;gt;&#039;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Функции==&lt;br /&gt;
Синтаксис: имя_функции(аргументы_функции):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
function is_even($number) {&lt;br /&gt;
    if ($number % 2 != 0) {&lt;br /&gt;
        return false;&lt;br /&gt;
    } else {&lt;br /&gt;
        return true;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
if (is_even(3)) {&lt;br /&gt;
    print(&amp;quot;3 - четное число&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
    print(&amp;quot;3 - нечетное число&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
==Подключение файлов==&lt;br /&gt;
Чтобы не писать всё в одном файле, используется команда require.&lt;br /&gt;
Содержимое файла sub.php:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
print(&amp;quot;Привет, я содержимое из sub.php!&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Содержимое файла index.php:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
require &#039;sub.php&#039;;&lt;br /&gt;
print(&amp;quot;А я - index.php!&amp;quot;);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
После подключения sub.php, содержимого этого файла доступно в index.php. Есть также include. Отличия между require() и include() таковы, что require() возвращает FATAL ERROR, если файл не найден, include() же возвращает только WARNING.&lt;br /&gt;
&lt;br /&gt;
==Полезные константы==&lt;br /&gt;
* __DIR__ — полный путь к директории, в которой находится текущий сценарий&lt;br /&gt;
* __FILE__ — полный путь к текущему сценарию&lt;br /&gt;
* $_COOKIE — ассоциативный массив, содержащий куки&lt;br /&gt;
* $_SESSION — ассоциативный массив, содержащий информацию о сессии&lt;br /&gt;
* $_POST — ассоциативный массив, содержащий данные, полученные после POST запроса&lt;br /&gt;
* $_GET — ассоциативный массив, содержащий данные, полученные после GET запроса&lt;br /&gt;
=Примеры=&lt;br /&gt;
1. Пусть есть сайт с формой:&lt;br /&gt;
Клиент:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;HTML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form name=&amp;quot;feedback&amp;quot; method=&amp;quot;POST&amp;quot; action=&amp;quot;form.php&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Ваше имя: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;name&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Ваш email: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;email&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Сообщение: &amp;lt;textarea name=&amp;quot;message&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;send&amp;quot; value=&amp;quot;Отправить&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
При получении формы сервером, данные из неё можно получить следующим образом:&lt;br /&gt;
Сервер:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (isset($_POST)) {&lt;br /&gt;
    print(&amp;quot;Имя: &amp;quot; . $_POST[&#039;name&#039;]);&lt;br /&gt;
    print(&amp;quot;&amp;lt;br&amp;gt;Email: &amp;quot; . $_POST[&#039;email&#039;]);&lt;br /&gt;
    print(&amp;quot;&amp;lt;br&amp;gt;Сообщение: &amp;quot; . $_POST[&#039;message&#039;]);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
2. Другой пример - отправка формы:&lt;br /&gt;
Клиент:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;HTML&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;form name=&amp;quot;file_upload&amp;quot; method=&amp;quot;POST&amp;quot; action=&amp;quot;form.php&amp;quot; enctype=&amp;quot;multipart/form-data&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;label&amp;gt;Ваш аватар: &amp;lt;input type=&amp;quot;file&amp;quot; name=&amp;quot;avatar&amp;quot;&amp;gt;&amp;lt;/label&amp;gt;&lt;br /&gt;
  &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;send&amp;quot; value=&amp;quot;Отправить файл&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Работать с файлом ожно следующим образом:&lt;br /&gt;
Сервер:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if (isset($_FILES[&#039;avatar&#039;])) {&lt;br /&gt;
    $file = $_FILES[&#039;avatar&#039;];&lt;br /&gt;
&lt;br /&gt;
    print(&amp;quot;Загружен файл с именем &amp;quot; . $file[&#039;name&#039;] . &amp;quot; и размером &amp;quot; . $file[&#039;size&#039;] . &amp;quot; байт&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Если не переместить файл в постаянную папку - файл будет удален:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
$current_path = $_FILES[&#039;avatar&#039;][&#039;tmp_name&#039;];&lt;br /&gt;
$filename = $_FILES[&#039;avatar&#039;][&#039;name&#039;];&lt;br /&gt;
$new_path = dirname(__FILE__) . &#039;/&#039; . $filename;&lt;br /&gt;
&lt;br /&gt;
move_uploaded_file($current_path, $new_path);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
=SQL=&lt;br /&gt;
Так же можно работать с базами данных. mysqli_connect - функция для подключения к mysql-серверу, mysqli_query - отправка sql-запроса:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;PHP&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
$link = mysqli_connect(&amp;quot;localhost&amp;quot;, &amp;quot;root&amp;quot;, &amp;quot;&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
$sql = &#039;INSERT INTO cities SET name = &amp;quot;Санкт-Петербург&amp;quot;&#039;;&lt;br /&gt;
$result = mysqli_query($link, $sql);&lt;br /&gt;
&lt;br /&gt;
if ($result == false) {&lt;br /&gt;
    print(&amp;quot;Произошла ошибка при выполнении запроса&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=web shell=&lt;br /&gt;
&lt;br /&gt;
Простейшим примером является загрузка файла с расширением .php на сайт, работающий на PHP (в качестве проверки можно попробовать обратиться по адресу &#039;&#039;&#039;cite.com/index.php&#039;&#039;&#039; и не получить ошибки). По умолчанию PHP-сайты работают так что пользователь обращается по URL к файлу (URL сайта, начиная с первого /, отображаются на определенную директорию на сервере, она называется &#039;&#039;&#039;web root&#039;&#039;&#039;) и, если этот файл имеет расширение php (или другое расширение из предопределенного списка расширений для PHP-файлов), то содержимое этого файла выполняется как код на PHP, вывод этого кода возвращается пользователю в ответе (кстати, так работает не только PHP, но и ASP.NET Web Forms, JSP, ASP). В результате, если пользователь может загрузить на сайт файл c расширением .php и обратиться к нему по URL (т. е. этот файл будет создан где-то внутри &#039;&#039;&#039;web root&#039;&#039;&#039;), то, если сервер специально не настроен чтобы файлы из директории для загрузок не выполнялись, PHP-код в нём будет выполнен. Соответственно, загрузив на уязвимый сайт файл &amp;lt;code&amp;gt;shell.php&amp;lt;/code&amp;gt; с кодом &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
42 * 66613;&lt;br /&gt;
&amp;lt;?php system(&#039;ls -lsa&#039;); ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
и, получив ссылку на него (к примеру, /uploads/5c8e82bb8ad66/attack.php), обратится по ней, то в результате этот PHP-код выполнится и в ответе сервера будет &lt;br /&gt;
произведение чисел 42 и 66613, а также список всех файлов в длинном формате (функция PHP system работает так же как одноимённая функция библиотеки Си - то есть выполняет команду shell). В итоге атакующий получает выполнение произвольного кода на сервере (RCE).&lt;br /&gt;
&lt;br /&gt;
=Обход методов защиты и атака=&lt;br /&gt;
&lt;br /&gt;
==Валидация имени файла==&lt;br /&gt;
&lt;br /&gt;
===Черный список ресширений===&lt;br /&gt;
Обходится с помощью использования двойных расширений (&amp;lt;code&amp;gt;shell.php.png&amp;lt;/code&amp;gt;) или  малоизвестный расширений (&amp;lt;code&amp;gt;.php5&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.phtml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.shtml&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.htaccess&amp;lt;/code&amp;gt;). Кроме того, возможна инъекция нулевого байта (&amp;lt;code&amp;gt;shell.php%00.jpg&amp;lt;/code&amp;gt;) или регистрозависимость при проверке (&amp;lt;code&amp;gt;PHp3&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;.aSp&amp;lt;/code&amp;gt;). &lt;br /&gt;
&lt;br /&gt;
===Белый список расширений===&lt;br /&gt;
Спасает от использования атакующим малоизвестных и регистрозависимых расширений, но все ещё обходится с помощью двойных расширений или инъекции нулевого байта. &lt;br /&gt;
&lt;br /&gt;
===Санитайзеры===&lt;br /&gt;
Оставляет большую степень свободы. Например, если санитайзер удаляет вхождения подстрок типа &amp;lt;code&amp;gt;.php&amp;lt;/code&amp;gt;, то использования имени файла вида &amp;lt;code&amp;gt;shell.p&#039;&#039;&#039;.php&#039;&#039;&#039;hp&amp;lt;/code&amp;gt; позволяет после загрузки получить файл с именем &amp;lt;code&amp;gt;shell.php&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Валидация Content-Type==&lt;br /&gt;
Обходится изменением заголовка Content-Type, например, с помощью перехватывающего прокси (burp suite). Соответсвенно, в запросе &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST / HTTP/1.1&lt;br /&gt;
Host: easy.fu.khashaev.ru&lt;br /&gt;
Content-Length: 200&lt;br /&gt;
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary&lt;br /&gt;
------WebKitFormBoundary&lt;br /&gt;
Content-Disposition: form-data; name=&amp;quot;file&amp;quot;; filename=&amp;quot;info.php&amp;quot;&lt;br /&gt;
Content-Type: text/php&lt;br /&gt;
 &amp;lt;?php phpinfo(); ?&amp;gt;&lt;br /&gt;
------WebKitFormBoundary--&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
строчка &amp;lt;code&amp;gt;Content-Type: text/php&amp;lt;/code&amp;gt; может быть заменена на строчку &amp;lt;code&amp;gt;Content-Type: image/png&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
==Прочее==&lt;br /&gt;
&#039;&#039;&#039;.htaccess&#039;&#039;&#039; - конфигурационный файл веб-сервера Apache, позволяющий управлять работой веб-сервера и настройками сайта с помощью различных параметров (директив) без изменения основного конфигурационного файла веб-сервера.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Server Side Includes&#039;&#039;&#039; - язык для динамической «сборки» веб-страниц на сервере из отдельных составных частей и выдачи клиенту полученного HTML-документа. Имеет расширения .shtml, .stm или .shtm. Например, при загрузке и вызове &#039;&#039;&#039;file.shtml&#039;&#039;&#039;, содержащего код &lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;lt;!-- #exec cmd=&amp;quot;ls&amp;quot; --&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
атакующему будет выведен список файлов данной директории. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Static HTML&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
При возможности загрузить на сервис статический HTML, создается HTML-страница, содержащая  вредоносный код (например, крадущего cookie), и ссылка на этот файл отправляется жертве. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Path Traversal&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Атака, основанная на использовании специфически составленных имен файлов (например, &amp;lt;code&amp;gt;../config.ini&amp;lt;/code&amp;gt;), позволяющих выйти за пределы директории хранения файлов. Может привести к переписыванию исходных фалов веб-приложения, конфигурационных или системных файлов. &lt;br /&gt;
Атака возможна, если не используется функция &amp;lt;code&amp;gt;basename&amp;lt;/code&amp;gt; (возвращает последний компонент имени из указанного пути) или её аналог. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Filename XSS&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Сервис уязвим к XSS, если допускается имя файла вида &amp;lt;code&amp;gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Полиглоты==&lt;br /&gt;
Полиглотами называют файлы, которые могут быть корректно распознаны как файлы разных типов. &lt;br /&gt;
Можно встраивать &lt;br /&gt;
* JavaScript в JPEG, GIF, PNG, PDF&lt;br /&gt;
* HTML в что-нибудь &lt;br /&gt;
* PHP в [https://rdot.org/forum/showthread.php?t=2780 JPEG ], [https://github.com/fakhrizulkifli/Defeating-PHP-GD-imagecreatefromgif GIF], [https://www.idontplaydarts.com/2012/06/encoding-web-shells-in-png-idat-chunks/ PNG]&lt;br /&gt;
&lt;br /&gt;
===Структура JPEG===&lt;br /&gt;
Все jpeg-файлы имеют схожую структуру. Рассмотрим в качестве примера изображение&lt;br /&gt;
&lt;br /&gt;
[[Файл:Mini.jpg|128px]]&lt;br /&gt;
 &lt;br /&gt;
В hex-редакторе оно выглядит следующим образом &lt;br /&gt;
&lt;br /&gt;
[[Файл:Hex_print.png]]&lt;br /&gt;
&lt;br /&gt;
В структуре jpeg-файлов содержатся служебные маркеры, состоящие из двух байт и всегда начинающиеся с FF.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;FF D8&#039;&#039;&#039; - маркер начала jpeg-файла;&lt;br /&gt;
* &#039;&#039;&#039;FF DA&#039;&#039;&#039; - маркер начала секции Start of Scan:&lt;br /&gt;
** в двух байтах хранится длинна заголовка изображения [00 0C];&lt;br /&gt;
** заголовок изображения [03 01 00 02 11 03 11 00 3F 00];&lt;br /&gt;
** непосредственно информацию о самом изображении;&lt;br /&gt;
* &#039;&#039;&#039;FF D9&#039;&#039;&#039; - маркер конца jpeg-файла.&lt;br /&gt;
&lt;br /&gt;
=Image Magic=&lt;br /&gt;
&#039;&#039;&#039;ImageMagick&#039;&#039;&#039; — набор программ для чтения и редактирования файлов множества графических форматов, свободное и кроссплатформенное ПО. Может использоваться с языками Perl, C, C++, Python, Ruby, PHP, Node.js, Pascal, Java, Delphi, в скриптах командной оболочки или самостоятельно.&lt;br /&gt;
ImageMagick обладает широким набором возможностей (конвертация, маскирование, увеличение контрастности и т.п.) и поддерживает работу с различными типами файлов, но так же в нем находили различные уязвимости:&lt;br /&gt;
* RCE [CVE-2016-3714]&lt;br /&gt;
* SSRF [CVE-2016-3718]&lt;br /&gt;
* File deletion [CVE-2016-3715]&lt;br /&gt;
* File moving [CVE-2016-3716]&lt;br /&gt;
* Local File Read [CVE-2016-3717]&lt;br /&gt;
CVE - Common Vulnerabilities and Exposures - база данных общеизвестных уязвимостей информационной безопасности.&lt;br /&gt;
&lt;br /&gt;
Был создан сайт [https://imagetragick.com/ ImageTragick], посвященный описанию некоторых уязвимостей ImageMagic. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Пример.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Допустим, что есть некоторый онлайн-сервис, позволяющих переводить файлы в разные форматы, использующий библиотеку ImageMagic. &lt;br /&gt;
Тогда, создав файл exploit.mvg с содержанием&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
push graphic-context&lt;br /&gt;
viewbox 0 0 640 480&lt;br /&gt;
fill &#039;url(https://example.com/&lt;br /&gt;
image.jpg &amp;quot; ; | ls  &amp;quot;-la)&#039;&lt;br /&gt;
pop graphic-context&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
и выполнив запрос на преобразование файла, аналогичный команде &lt;br /&gt;
&amp;lt;pre&amp;gt;$ convert exploit.mvg out.png&amp;lt;/pre&amp;gt;&lt;br /&gt;
атакующий получит список всех файлов директории.&lt;br /&gt;
&lt;br /&gt;
=Стенды=&lt;br /&gt;
* http://easy.stands.prak.seclab.cs.msu.ru&lt;br /&gt;
* http://type.stands.prak.seclab.cs.msu.ru (Внимание: сначала определите, в какой директории лежит файл)&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1Jep20CuBfcfKAeStwnHgR0gCf-O2Wgd0/view?usp=sharing Презентация]&lt;br /&gt;
* [https://disk.yandex.ru/i/iyE_cBCrH2VWUg Видео]&lt;br /&gt;
* [https://www.php.net/ https://www.php.net/] - сайт PHP&lt;br /&gt;
* [https://htmlacademy.ru/tutorial/php https://htmlacademy.ru/tutorial/php] - учебник PHP&lt;br /&gt;
* [http://www.php.su/php/?php http://www.php.su/php/?php] - ещё один учебник&lt;br /&gt;
* [https://www.alchemistowl.org/pocorgtfo/pocorgtfo15.pdf Полиглоты]&lt;br /&gt;
* [https://drive.google.com/file/d/1Rz0RP5tKIWCmFDP3-_--VYu40ejWf48v/view?usp=sharing Валидация структурных типов]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;diff=692</id>
		<title>Веб-безопасность/Базы данных SQL</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;diff=692"/>
		<updated>2022-09-21T07:08:21Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Теория==&lt;br /&gt;
&#039;&#039;&#039;База данных (БД)&#039;&#039;&#039; - представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью ЭВМ.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Система управления баз данных (СУБД)&#039;&#039;&#039; - совокупность программных и лингвистических средств, обеспечивающих управление созданием и использованием баз данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Функции СУБД&#039;&#039;&#039;&lt;br /&gt;
#управление данными во внешней памяти (на дисках);&lt;br /&gt;
#управление данными в оперативной памяти с использованием дискового кэша;&lt;br /&gt;
#журнализация изменений, резервное копирование и восстановление базы данных после сбоев;&lt;br /&gt;
#поддержка языков БД&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Понятия ====&lt;br /&gt;
&#039;&#039;&#039;Тип данных&#039;&#039;&#039;&lt;br /&gt;
Значения данных, хранимые в реляционной базе данных, являются типизированными, т. е. известен тип каждого хранимого значения. Понятие типа данных в реляционной модели данных полностью соответствует понятию типа данных в языках программирования. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Домен&#039;&#039;&#039;&lt;br /&gt;
В общем виде домен определяется путем задания некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу этого типа данных (ограничения домена). Элемент данных является элементом домена в том и только в том случае, если вычисление этого логического выражения дает результат истина (для логических значений мы будем попеременно использовать обозначения истина и ложь или true и false). С каждым доменом связывается имя, уникальное среди имен всех доменов соответствующей базы данных.&lt;br /&gt;
Наиболее правильной интуитивной трактовкой понятия домена является его восприятие как допустимого потенциального, ограниченного подмножества значений данного типа. Данные считаются сравнимыми только в том случае, когда они относятся к одному домену. &lt;br /&gt;
&lt;br /&gt;
Итак, &#039;&#039;&#039;заголовком&#039;&#039;&#039; (или схемой) отношения r (Hr) называется конечное множество упорядоченных пар вида &amp;lt;A, T&amp;gt;, где A называется именем атрибута, а T обозначает имя некоторого базового типа или ранее определенного домена. По определению требуется, чтобы все имена атрибутов в заголовке отношения были различны. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Кортежем&#039;&#039;&#039; tr, соответствующим заголовку Hr, называется множество упорядоченных триплетов вида &amp;lt;A, T, v&amp;gt;, по одному такому триплету для каждого атрибута в Hr. Третий элемент – v – триплета &amp;lt;A, T, v&amp;gt; должен являться допустимым значением типа данных или домена T. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Телом&#039;&#039;&#039; Br отношения r называется произвольное множество кортежей tr.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Значением&#039;&#039;&#039; Vr отношения r называется пара множеств Hr и Br.&lt;br /&gt;
В изменчивой реляционной базе данных хранятся отношения, значения которых изменяются во времени. Переменной VARr называется именованный контейнер, который может содержать любое допустимое значение Vr. Естественно, что при определении любой VARr требуется указывать соответствующий заголовок отношения Hr.&lt;br /&gt;
&lt;br /&gt;
====Первичный ключ====&lt;br /&gt;
&#039;&#039;&#039;Первичный ключ&#039;&#039;&#039; переменной отношения - такое подмножество S множества атрибутов ее заголовка, что в любое время значение первичного ключа (составное, если в состав первичного ключа входит более одного атрибута) в любом кортеже тела отношения отличается от значения первичного ключа в любом другом кортеже тела этого отношения, а никакое собственное подмножество) S этим свойством не обладает.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Свойства первичного ключа:&#039;&#039;&#039;&lt;br /&gt;
#характеризует кортеж&lt;br /&gt;
#уникальный &lt;br /&gt;
#не избыточный&lt;br /&gt;
&lt;br /&gt;
====Метаданные====&lt;br /&gt;
&#039;&#039;&#039;Метаданные&#039;&#039;&#039; - информация о другой информации, раскрывает сведения о признаках и свойствах, характеризующих какие-либо сущности, позволяющие автоматически искать и управлять ими в больших информационных потоках.&lt;br /&gt;
&lt;br /&gt;
== Основные операторы SQL ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим некоторые операторы SQL и примеры их применения. &lt;br /&gt;
&lt;br /&gt;
Допустим, имеются три таблицы: characters с полями (id, name, race, level, class), classes с полями (class_type, strength, dexterity, constitution, intelligence, wisdom, charisma) и monsters с полями (name, level), хранящиеся в базе данных heroes. &lt;br /&gt;
&lt;br /&gt;
==== База данных ====&lt;br /&gt;
&lt;br /&gt;
Для начала выведем базы данных, которые доступны.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; show databases(); &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для переключения на определенную базу данных, следует выполнить запрос&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; use heroes;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом можно посмотреть все таблицы базы данных.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; show tables;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для выяснения активных на данный момент базы данных и пользователя, используются соответствующие два запроса.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select database();&lt;br /&gt;
 select user();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для создания БД и таблиц в ней используются файлы инициализации (init-db.sql), написанные на языке sql запросов. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; source init-db.sql; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Аналогичный эффект будет получен, если напрямую вводить команды из файла в терминал. &amp;lt;br&amp;gt;&lt;br /&gt;
Note: если init-db.sql находится не в текущей папке, то следует прописать к нему путь. &lt;br /&gt;
&lt;br /&gt;
Для получения описания таблицы, следует перейти в соответствующую БД и вызвать &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; describe classes; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Таблицы ====&lt;br /&gt;
Теперь обратим внимание на таблицы.&lt;br /&gt;
&lt;br /&gt;
Сначала посмотрим все записи в таблице characters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from characters; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Если же требуется вывести только определенные колонки (например name и race), то запрос будет таким.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select name, race from characters; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вывода классов с харизмой выше 7 следует сформировать следующий запрос.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from classes where wisdom &amp;gt; 15; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
А для вывода все персонажей класса Bard понадобится такой запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from characters where class=&#039;Bard&#039;; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее выведем число персонажей каждого класса.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select class, count(class) as num_of_class from characters group by class; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Если же нужно вывести персонажей с уникальным классом, то к предыдущему запросу следует добавить условие с помощью having.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select class, count(class) as num_of_class from characters group by class having num_of_class = 1; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для упорядочивания используется order by. Пера метры в квадратных скобках необязательные, обозначают упорядочивание по возрастанию|по убыванию&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from classes order by  level [asc|desc]; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вывода первых нескольких(5) записей таблицы используется запрос &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from classes limit 5; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если хотим вывести список персонажей со всеми их характеристиками, то сформируем следующий запрос. &lt;br /&gt;
В нем таблицы characters и classes объединяются по колонкам class и class_type соответственно. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select * from characters &lt;br /&gt;
 inner join classes &lt;br /&gt;
 on characters.class = classes.class_type;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если хотим вывести все имена и уровни персонажей и монстров, сформируем следующий запрос.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select name, level from characters &lt;br /&gt;
 union &lt;br /&gt;
 select name, level from monsters;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первая строчка выберет все имена и уровни из таблицы characters, третья выберет все имена и уровни из таблицы monsters, а вторая объединит записи. &lt;br /&gt;
Важно учитывать, общее число в обеих таблицах должно совпадать, а так же соответствующие  друг другу столбцы разных таблиц должны быть одного типа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также можно формировать более сложные запросы. Например запрос &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select name, class from characters &lt;br /&gt;
 where class in&lt;br /&gt;
 (select class_type from classes where wisdom &amp;gt; 11)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
выводит имена и классы всех персонажей, мудрость которых выше 11. &lt;br /&gt;
В первой строчке идет выбор столбцов имени и класса; в третьей - из таблицы classes выбираются названия только тех классов, мудрость которых выше 11; а вторая проверяет вхождение класса персонажа в множество подходящих классов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Данным списком не исчерпывается множество операторов и запросов. Подробнее можно почитать например [http://2sql.ru/ здесь] или обратиться к документации (man, help).&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://yadi.sk/d/o4cFtxls-WlUAw/%D0%A1%D0%B5%D0%BC%D0%B8%D0%BD%D0%B0%D1%80%202.%2024%20%D1%81%D0%B5%D0%BD%D1%82%D1%8F%D0%B1%D1%80%D1%8F.mp4?w=1 видео &amp;quot;Базы данных. SQL&amp;quot;]&lt;br /&gt;
* [https://drive.google.com/file/d/1fK2wcYZmJhpZUKwC-jKVbiozbWHEEDbc/view?usp=sharing Презентация]&lt;br /&gt;
* [https://drive.google.com/file/d/1CHRnbqRYZZ07hlnEOjngF5NVj_1OBUfr/view?usp=sharing БД, с которой работали на семинаре]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=691</id>
		<title>Практикум на ЭВМ (2022)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=691"/>
		<updated>2022-09-21T07:03:11Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «==Формулировка== Вам нужно написать маленькое веб-приложение, в котором для хранения данн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 9:00 22 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 9:00 и 21:00 22 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;21:00 22 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=690</id>
		<title>Практикум на ЭВМ (2022)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2022)&amp;diff=690"/>
		<updated>2022-09-21T07:00:23Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «__NOTOC__ &amp;#039;&amp;#039;&amp;#039;Практикум на ЭВМ&amp;#039;&amp;#039;&amp;#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуаль…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по понедельникам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 604&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в принимающую систему. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2022)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (12 сентября 2021) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (19 сентября 2021) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA_%D0%B8_DNS&amp;diff=659</id>
		<title>Сетевая безопасность/Сетевой стек и DNS</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA_%D0%B8_DNS&amp;diff=659"/>
		<updated>2022-04-17T12:08:53Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Рассмотрим, что будет происходить, когда Вы набираете URL в браузере и жмете Enter на примере запроса &amp;quot;google.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=URL или нет?=&lt;br /&gt;
Браузер определяет, что перед ним - URL или поисковый запрос. Если в запросе не получилось выделить протокол или доменное имя, браузер отправляет запрос в поиск, установленный по умолчанию.&lt;br /&gt;
&lt;br /&gt;
==Это URL==&lt;br /&gt;
Поскольку в запросе &amp;quot;google.com&amp;quot; удалось распознать доменное имя, браузер будет обращаться к соответствующему веб-ресурсу. У браузера есть следующая информация (т.к. не указано иное):&lt;br /&gt;
# Использовать протокол HTTP&lt;br /&gt;
# Показать главную страницу («/»)&lt;br /&gt;
&lt;br /&gt;
==Проверка HSTS==&lt;br /&gt;
Браузер проверяет, не находится ли сайт в списке preloaded HSTS (HTTP Strict Transport Security). Если да, обращение произойдет по HTTPS.&lt;br /&gt;
&lt;br /&gt;
Сайт может не находиться в списке, но придерживаться политике HSTS, тогда на первый HTTP-запрос от пришлет ответ, содержащий информацию, что к нему требуется обращаться по HTTPS.&lt;br /&gt;
&lt;br /&gt;
=DNS=&lt;br /&gt;
Далее необходимо определить IP-адрес соответствующего веб-ресурса.&lt;br /&gt;
&lt;br /&gt;
Первым делом браузер проверит свой DNS-кэш.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DNS-кэш.png|700px|DNS-кэш]]&lt;br /&gt;
&lt;br /&gt;
Затем браузер вызывает библиотечную функцию gethostbyname. Осуществляется проверка наличия нужной записи в файле hosts.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Содержимое файла hosts.png|500px|Содержимое файла hosts]]&lt;br /&gt;
&lt;br /&gt;
Если не удалось найти нужный адрес в DNS кэше и файле hosts, gethostbyname отправляет ARP-запрос к сетевому DNS-серверу.&lt;br /&gt;
&lt;br /&gt;
Если DNS-сервер, находится в той же подсети, то ARP-запрос отправляется напрямую этому серверу.&lt;br /&gt;
&lt;br /&gt;
Если в другой подсети - запрос отправляется на IP-адрес шлюза по умолчанию (default gateway).&lt;br /&gt;
&lt;br /&gt;
==ARP==&lt;br /&gt;
&lt;br /&gt;
ARP (Address Resolution Protocol) — протокол канального уровня, предназначенный для определения MAC-адреса по IP-адресу.&lt;br /&gt;
&lt;br /&gt;
===Принцип работы===&lt;br /&gt;
* A и B соединены по Ethernet. A известен IP-адрес B. A хочет передать B пакет данных.&lt;br /&gt;
* Задача: узнать MAC-адрес B.&lt;br /&gt;
* Принцип работы: A отправляет broadcast ARP-запрос по сегменту сети: «Хост с IP-адресом &amp;lt;ip_b&amp;gt;, сообщите свой MAC-адрес хосту с MAC-адресом &amp;lt;mac_a&amp;gt;».&lt;br /&gt;
* B получает ARP-запрос и отправляет A ARP-ответ со своим MAC.&lt;br /&gt;
&lt;br /&gt;
==Запрос к DNS-серверу==&lt;br /&gt;
Перед отправкой запроса осуществляется проверка ARP-кэша на предмет наличия нужного IP-адреса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ARP-кэш.png|600px|ARP-кэш]]&lt;br /&gt;
&lt;br /&gt;
После этого проверяется таблица маршрутизации — это делается для того, чтобы узнать, есть ли искомый IP-адрес в какой-либо из подсетей локальной таблицы.&lt;br /&gt;
&lt;br /&gt;
На этом этапе мы знаем MAC-адрес локального DNS-сервера (или DNS-сервера на стороне провайдера)&lt;br /&gt;
&lt;br /&gt;
==DNS lookup==&lt;br /&gt;
По UDP отправляется запрос локальному DNS серверу (на 53 порт).&lt;br /&gt;
&lt;br /&gt;
DNS-сервер возвращает ответ. Если он «не знает» нужный IP, запускается рекурсивный поиск (пока не найдется SOA запись).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dns-lookup.png|600px|DNS lookup]]&lt;br /&gt;
&lt;br /&gt;
==Подробнее про DNS==&lt;br /&gt;
DNS (Domain Name System) - распределенная система для получения информации о доменах (например, получения IP-адреса по имени хоста, получения информации о маршрутизации почты).&lt;br /&gt;
&lt;br /&gt;
===Запись DNS===&lt;br /&gt;
Запись состоит из следующих полей:&lt;br /&gt;
* имя (NAME) - доменное имя&lt;br /&gt;
* тип (TYPE)&lt;br /&gt;
* класс (CLASS) - тип сети. DNS была разработана как система, потенциально совместимая не только с TCP/IP стеком, но и с другими возможными типами сетей. Фактически это поле обычно содержит значение IN (означает Internet), но очень редко встречаются другие классы (см. ссылку в конце статьи).&lt;br /&gt;
* TTL - допустимое время хранения кэшированной записи на DNS-сервере&lt;br /&gt;
* длина поля данных (RDLEN) - содержится в некоторых типах записей&lt;br /&gt;
* поле данных (RDATA) - содержится в некоторых типах записей&lt;br /&gt;
&lt;br /&gt;
===Типы записей===&lt;br /&gt;
* A - связывает имя хоста с адресом протокола IPv4&lt;br /&gt;
* AAAA - связывает имя хоста с адресом протокола IPv6&lt;br /&gt;
* CNAME (canonical name record) - псевдоним, переправление на другое имя&lt;br /&gt;
* MX (mail exchange) - сервер обмена почтой для данного домена&lt;br /&gt;
* NS (name server) - DNS-сервер для данного домена&lt;br /&gt;
* PTR (pointer) - обратная DNS-запись, связывает IP с FQDN&lt;br /&gt;
* SOA (start of authority) - указывает, на каком сервере хранится эталонная информация о данном домене&lt;br /&gt;
&lt;br /&gt;
===DNS клиент===&lt;br /&gt;
DNS клиент - утилита, позволяющая осуществить доступ к системе DNS.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
* nslookup&lt;br /&gt;
* dig&lt;br /&gt;
* Альтернативы с GUI&lt;br /&gt;
&lt;br /&gt;
По умолчанию dig осуществляет поиск записи типа A:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig.png|600px|dig]]&lt;br /&gt;
&lt;br /&gt;
Флаг -t позволяет задать желаемый тип записи:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig -t.png|700px|dig -t]]&lt;br /&gt;
&lt;br /&gt;
Опция +short позволяет опустить всю дополнительную информацию, будет выведен только IP-адрес.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig +short.png|600px|dig +short]]&lt;br /&gt;
&lt;br /&gt;
===Scapy===&lt;br /&gt;
Также можно просто вручную создать UDP-пакет и отправить его на DNS-сервер.&lt;br /&gt;
&lt;br /&gt;
Для этого можно использовать Scapy - библиотеку для манипулирования сетевыми пакетами на языке Python. Она позволяет собрать сетевой пакет по уровням сетевого стека.&lt;br /&gt;
&lt;br /&gt;
====Пример: отправка Ping на google.com====&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ping с помощью Scapy.png|600px|Ping с помощью Scapy]]&lt;br /&gt;
&lt;br /&gt;
Для формирования пакета p необходимо задать тип пакета на уровне протокола ICMP (на самом деле, в случае типа &amp;quot;echo-request&amp;quot; это не обязательно, так как этот тип будет установлен по умолчанию) и адрес получателя на уровне протокола IP.&lt;br /&gt;
&lt;br /&gt;
Далее отправляем пакет с помощью функции sr1, ответ окажется в переменной r.&lt;br /&gt;
&lt;br /&gt;
В результате в r окажется пакет типа echo-reply.&lt;br /&gt;
&lt;br /&gt;
====Пример: DNS запрос====&lt;br /&gt;
&lt;br /&gt;
[[Файл:DNS запрос с посощью Scapy.png|700px|DNS запрос с посощью Scapy]]&lt;br /&gt;
&lt;br /&gt;
Необходимо указать:&lt;br /&gt;
* Для уровня протокола DNS - разрешить рекурсивный поиск (параметр rd) и указать содержимое запроса&lt;br /&gt;
* Для уровня протокола UDP - указать порт (на самом деле, поскольку указан протокол DNS, обращение по умолчанию произойдет на 53 порт, так что достаточно просто обозначить, что обращение должно осуществляться по протоколу UDP, что видно далее в примере)&lt;br /&gt;
* Для уровня протокола IP - адрес локального DNS-сервера&lt;br /&gt;
&lt;br /&gt;
В результате в пакете r получаем DNS-ответ.&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
Исторически сложилось, что DNS разрабатывалась только как распределенная система, поэтому она не защищает пользователя от подмены предоставляемых ему данных.&lt;br /&gt;
&lt;br /&gt;
Пример атаки: DNS cache poisoning - кэш доменных имен изменяется с целью возврата ложного IP-адреса.&lt;br /&gt;
&lt;br /&gt;
DNSSEC - набор расширений DNS, направленный на обеспечение защиты клиентов от фальшивых данных. Все ответы DNSSEC имеют цифровую подпись, используется асимметричное шифрование. &lt;br /&gt;
&lt;br /&gt;
DNSSEC не обеспечивает конфиденциальность данных, осуществляется только аутентификация отправляемых данных, сами данные не шифруются.&lt;br /&gt;
&lt;br /&gt;
===WHOIS===&lt;br /&gt;
WHOIS - протокол прикладного уровня (и одноименная утилита для обращений к нему), базирующийся на протоколе TCP для получения информации о владельцах доменных имен и IP-адресов.&lt;br /&gt;
&lt;br /&gt;
Используется для доступа к публичным серверам баз данных регистраторов IP-адресов и доменных имён.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Whois.png|600px|whois]]&lt;br /&gt;
&lt;br /&gt;
=Установка соединения=&lt;br /&gt;
На этом этапе у нас есть IP-адрес нужного веб ресурса и порт для установки соединения.&lt;br /&gt;
&lt;br /&gt;
Браузер осуществляет вызов функции socket системной библиотеки и запрашивает поток TCP сокета - AF_INET и SOCK_STREAM, формируется пакет для передачи.&lt;br /&gt;
&lt;br /&gt;
==Формирование пакета==&lt;br /&gt;
* Транспортный уровень - собирается TCP-сегмент. В заголовок добавляется порт назначения, исходный порт выбирается из динамического пула ядра.&lt;br /&gt;
* Сетевой уровень - добавляется дополнительный IP-заголовок. Также включаются IP-адрес сервера назначения и адрес текущей машины — после этого пакет сформирован.&lt;br /&gt;
* Канальный уровень - добавляется заголовок кадра, включающий MAC-адрес сетевой карты компьютера, а также MAC-адрес шлюза. Если ядру ничего не известно о MAC-адресе шлюза, то для его нахождения отправляется широковещательный ARP-запрос.&lt;br /&gt;
&lt;br /&gt;
==Отправка пакета==&lt;br /&gt;
По Ethernet/WiFi пакет доберётся до маршрутизатора, управляющего локальной подсетью. Затем он отправится на следующий роутер и т.д., пока не доберётся до сервера назначения. &lt;br /&gt;
&lt;br /&gt;
Каждый маршрутизатор на пути будет извлекать адрес назначения из IP-заголовка и отправлять пакет на следующий хоп, уменьшая TTL. Если значение поля TTL достигнет нуля, пакет будет отброшен (это произойдёт также если у маршрутизатора не будет места в текущей очереди — например, из-за перегрузки сети).&lt;br /&gt;
&lt;br /&gt;
==TCP соединение==&lt;br /&gt;
# Клиент выбирает номер начальной последовательности (ISN) и отправляет пакет серверу с установленным битом SYN для открытия соединения.&lt;br /&gt;
# Сервер получает пакет с битом SYN и, если готов к установлению соединения, то:&lt;br /&gt;
* Выбирает собственный номер начальной последовательности;&lt;br /&gt;
* Устанавливает SYN-бит, чтобы сообщить о выборе начальной последовательности;&lt;br /&gt;
* Копирует ISN клиента +1 в поле ACK и добавляет ACK-флаг для обозначения подтверждения получения первого пакета.&lt;br /&gt;
# Клиент подтверждает соединение путём отправки пакета:&lt;br /&gt;
* Увеличивает номер своей начальной последовательности;&lt;br /&gt;
* Увеличивает номер подтверждения получения;&lt;br /&gt;
* Устанавливает поле ACK.&lt;br /&gt;
# Данные передаются следующим образом:&lt;br /&gt;
* Когда одна сторона отправляет N байтов, то увеличивает значение поля SEQ на это число.&lt;br /&gt;
* Когда вторая сторона подтверждает получение этого пакета (или цепочки пакетов), она отправляет пакет ACK, в котором значение поля ACK равняется последней полученной последовательности.&lt;br /&gt;
# Закрытие соединения:&lt;br /&gt;
* Сторона, которая хочет закрыть соединение, отправляет пакет FIN;&lt;br /&gt;
* Другая сторона подтверждает FIN (с помощью ACK) и отправляет собственный FIN-пакет;&lt;br /&gt;
* Инициатор прекращения соединения подтверждает получение FIN отправкой собственного ACK.&lt;br /&gt;
&lt;br /&gt;
=TLS handshake=&lt;br /&gt;
# Клиентский компьютер отправляет сообщение ClientHello серверу со своей версией протокола TLS, списком поддерживаемых алгоритмов шифрования и методов компрессии данных.&lt;br /&gt;
# Сервер отвечает клиенту сообщением ServerHello, содержащим версию TLS, выбранный метод шифрования, выбранные методы компрессии и публичный сертификат сервиса, подписанный центром сертификации. Сертификат содержит публичный ключ, который будет использоваться клиентом для шифрования оставшейся части процедуры «рукопожатия», пока не будет согласован симметричный ключ.&lt;br /&gt;
# Клиент подтверждает сертификат сервера с помощью своего списка центров сертификации. Если сертификат подписан центром из списка, то серверу можно доверять, и клиент генерирует строку псевдослучайных байтов и шифрует её с помощью публичного ключа сервера. Эти случайные байты могут быть использованы для определения симметричного ключа.&lt;br /&gt;
# Сервер расшифровывает случайные байты с помощью своего секретного ключа и использует эти байты для генерации своей копии симметричного мастер-ключа.&lt;br /&gt;
# Сервер генерирует собственный хеш, а затем расшифровывает полученный от клиента хеш, чтобы проверить, совпадёт ли он с собственным. Если совпадение обнаружено, сервер отправляет клиенту собственный ответ Finished, также зашифрованный симметричным ключом.&lt;br /&gt;
# После этого TLS-сессия передаёт данные приложения (HTTP), зашифрованные с помощью подтверждённого симметричного ключа.&lt;br /&gt;
&lt;br /&gt;
=HTTP=&lt;br /&gt;
* Клиент отправляет серверу HTTP-запрос:&lt;br /&gt;
GET / HTTP/1.1&lt;br /&gt;
Host: google.com&lt;br /&gt;
Connection: close (закрыть соединение по завершении взаимодействия)&lt;br /&gt;
[другие заголовки]&lt;br /&gt;
[пустая строка]&lt;br /&gt;
&lt;br /&gt;
* Сервер отвечает:&lt;br /&gt;
200 OK&lt;br /&gt;
[заголовки ответа]&lt;br /&gt;
[пустая строка]&lt;br /&gt;
[контент HTML-страницы www.google.com]&lt;br /&gt;
и закрывает соединение (так как клиент отправил заголовок Connection: close)&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1_f3Pd5-E-mSsjYm_nZ-Jt16DLAD6Ck-h/view?usp=sharing Презентация]&lt;br /&gt;
* [https://youtu.be/4IBPn7CWB0I Видео]&lt;br /&gt;
* [https://github.com/alex/what-happens-when Еще более подробное описание того, что происходит при обращении по URL]&lt;br /&gt;
* [https://miek.nl/2009/july/31/dns-classes/ О классах записей DNS]&lt;br /&gt;
* [https://scapy.readthedocs.io/en/latest/ Документация Scapy]&lt;br /&gt;
* [http://ccna.mpei.ac.ru/IntroductionToNetworkTech/course/module7/7.2.1.3/7.2.1.3.html Подробнее про установку TCP-соединения]&lt;br /&gt;
* [https://habr.com/ru/post/258285/ Подробнее про TLS handshake]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=658</id>
		<title>Практикум на ЭВМ (2021)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=658"/>
		<updated>2022-04-17T12:05:17Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 609&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в принимающую систему. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2021)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 12.10.2021 15:53)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline -  23.10.2021 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru (deadline -  23.10.2021 23:59)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline -  23.10.2021 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru/ (deadline - 28.10.2021 15:30)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru/ (deadline - 28.10.2021 15:30)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/19qIXrbhGyFUAHY-fG3pTlpse4GLLRgr7/view?usp=sharing task 1] nc 91.214.70.136 16971 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1Mw_BkNZ-QBkbQrRXLtZLkd3FypMdHp-d/view?usp=sharing task 2] nc 91.214.70.136 16972 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1IhG_OD6BDIS4TA_0QXrNxlRqU0xMcV_R/view?usp=sharing task 3] nc 91.214.70.136 16973 (deadline - 24.12.2021 12:00)&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1KF992P4Vt3i_7Hr2O6qPCxb5GOzPBXK8/view?usp=sharing task 4] nc tasks.prak.seclab.cs.msu.ru 16974 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1ENAVVDKlKIGgELZh6sCaP1wJ4SiOAYwz/view?usp=sharing task 5] nc tasks.prak.seclab.cs.msu.ru 16965 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 6] nc tasks.prak.seclab.cs.msu.ru 16966  (deadline - 24.12.2021 12:00)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense] (deadline - 12.04.2022 15:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2021) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2021) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2021) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2021) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (7 октября 2021) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2021) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (21 октября 2021) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (28 октября 2021) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (22 ноября 2021) [[Бинарные_уязвимости/Stack_overflow]]&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
Семинар 16 декабря 2021 [[Уязвимости_мобильных_приложений/Уязвимости]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
Семинар 1 (21 февраля 2021) [[Введение в практическую безопасность (2019)/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (5 марта 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (14 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
Семинар 5 (4 апреля 2022) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (11 апреля 2021) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=633</id>
		<title>Практикум на ЭВМ (2021)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=633"/>
		<updated>2022-04-05T06:35:57Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 609&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в принимающую систему. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2021)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 12.10.2021 15:53)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline -  23.10.2021 23:59)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru (deadline -  23.10.2021 23:59)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline -  23.10.2021 23:59)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru/ (deadline - 28.10.2021 15:30)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru/ (deadline - 28.10.2021 15:30)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/19qIXrbhGyFUAHY-fG3pTlpse4GLLRgr7/view?usp=sharing task 1] nc 91.214.70.136 16971 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1Mw_BkNZ-QBkbQrRXLtZLkd3FypMdHp-d/view?usp=sharing task 2] nc 91.214.70.136 16972 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1IhG_OD6BDIS4TA_0QXrNxlRqU0xMcV_R/view?usp=sharing task 3] nc 91.214.70.136 16973 (deadline - 24.12.2021 12:00)&lt;br /&gt;
&lt;br /&gt;
* [https://drive.google.com/file/d/1KF992P4Vt3i_7Hr2O6qPCxb5GOzPBXK8/view?usp=sharing task 4] nc tasks.prak.seclab.cs.msu.ru 16974 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1ENAVVDKlKIGgELZh6sCaP1wJ4SiOAYwz/view?usp=sharing task 5] nc tasks.prak.seclab.cs.msu.ru 16965 (deadline - 24.12.2021 12:00)&lt;br /&gt;
* [https://drive.google.com/file/d/1QcgUUOuKrBB0zce9Er5OCAPIVTQ5jig5/view?usp=sharing task 6] nc tasks.prak.seclab.cs.msu.ru 16966  (deadline - 24.12.2021 12:00)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: [https://khashaev.ru/secsem/rsa/#broadcast broadcast], [https://khashaev.ru/secsem/rsa/#common-sense common-sense] (deadline - 12.04.2022 15:53)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2021) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2021) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2021) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2021) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (7 октября 2021) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2021) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (21 октября 2021) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (28 октября 2021) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (22 ноября 2021) [[Бинарные_уязвимости/Stack_overflow]]&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
Семинар 16 декабря 2021 [[Уязвимости_мобильных_приложений/Уязвимости]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
Семинар 1 (21 февраля 2021) [[Введение в практическую безопасность (2019)/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (5 марта 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (14 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
Семинар 5 (4 апреля 2022) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0&amp;diff=632</id>
		<title>Сетевая безопасность/Анализ сетевого трафика</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%90%D0%BD%D0%B0%D0%BB%D0%B8%D0%B7_%D1%81%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B3%D0%BE_%D1%82%D1%80%D0%B0%D1%84%D0%B8%D0%BA%D0%B0&amp;diff=632"/>
		<updated>2022-04-05T06:30:24Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Теоретические сведения=&lt;br /&gt;
==TTL==&lt;br /&gt;
* Хоп - переход пакета между двумя маршрутизаторами.&lt;br /&gt;
* TTL - максимальное количество хопов, которое может пройти пакет до своего исчезновения.&lt;br /&gt;
При получении пакета маршрутизатор уменьшает его TTL на 1. Если TTL становится равным 0, пакет уничтожается, а его отправителю посылается пакет ICMP Time Exceeded.&lt;br /&gt;
&lt;br /&gt;
==RTT==&lt;br /&gt;
* RTT (round-trip time) - время, затраченное на отправку пакета + время, которое требуется для подтверждения, что пакет был получен.&lt;br /&gt;
&lt;br /&gt;
=Инструменты для анализа сетевого трафика=&lt;br /&gt;
==Утилита Ping==&lt;br /&gt;
Ping - утилита для проверки целостности и качества соединений в сетях на основе TCP/IP. В работе использует протокол ICMP.&lt;br /&gt;
&lt;br /&gt;
ICMP (Internet Control Message Protocol) - протокол сетевого уровня, в основном используемый для передачи сообщений об ошибках.&lt;br /&gt;
&lt;br /&gt;
Утилита Ping отправляет интересующему узлу пакеты ICMP Echo-Request и фиксирует поступление ответов ICMP Echo-Reply.&lt;br /&gt;
&lt;br /&gt;
===Пример работы===&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 18.01.35.png|600 px|Пример работы утилиты Ping]]&lt;br /&gt;
&lt;br /&gt;
В примере выше отправлены 8 пакетов (желаемое количество пакетов задается флагом -t) на домен google.com.&lt;br /&gt;
Утилита определила соответствующий домену IP адрес и отправила на него заданное количество пакетов.&lt;br /&gt;
&lt;br /&gt;
В результате утилита вывела следующую информацию по каждому отправленному пакету:&lt;br /&gt;
* номер пакета,&lt;br /&gt;
* TTL пакета на момент его получения,&lt;br /&gt;
* RTT пакета.&lt;br /&gt;
&lt;br /&gt;
Также вывод содержит информацию о том, сколько пакетов ICMP Echo-Reply в итоге было получено, процент потерянной информации, минимальное, максимальное и среднее значение RTT и величину среднеквадратического отклонения для RTT.&lt;br /&gt;
&lt;br /&gt;
==Traceroute==&lt;br /&gt;
Traceroute (Tracert в Windows) - утилита, используемая для определения маршрутов следования данных в сетях TCP/IP. В работе может использовать различные протоколы (TCP, UDP, ICMP).&lt;br /&gt;
&lt;br /&gt;
===Принцип работы===&lt;br /&gt;
# На целевой хост отправляется серия пакетов (обычно, 3) с TTL = 1.&lt;br /&gt;
# Первый маршрутизатор, который встретится на пути каждого отправленного пакета, уменьшит TTL на 1. TTL станет равным 0.&lt;br /&gt;
# Маршрутизатор отправит источнику сообщение о том, что пакет не может быть передан далее (сообщая источнику свой IP адрес).&lt;br /&gt;
# На целевой хост отправляется серия пакетов с TTL = 2...&lt;br /&gt;
&lt;br /&gt;
===Пример работы===&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 18.46.07.png|600px|Пример работы Traceroute]]&lt;br /&gt;
&lt;br /&gt;
При вызове Traceroute для домена также будет показан IP адрес, TTL и вес пакетов.&lt;br /&gt;
Для каждого из маршрутизаторов, встретившихся на пути пакетов, указывается&lt;br /&gt;
* Доменное имя, если его удалось получить&lt;br /&gt;
* IP адрес (или адреса, если разные пакеты серии пришли на разные маршрутизаторы)&lt;br /&gt;
* Время доставки для каждого из пакетов&lt;br /&gt;
&lt;br /&gt;
Также вместо информации по одному или нескольким пакетам может быть показан символ &amp;quot;*&amp;quot;. Это означает, чтобы тем или иным причинам отправитель не получил от этого маршрутизатора ICMP Time Exceeded.&lt;br /&gt;
&lt;br /&gt;
Часть возможных причин указана на странице справки traceroute:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-09 в 19.34.21.png|700 px|Справка traceroute]]&lt;br /&gt;
&lt;br /&gt;
==Netcat==&lt;br /&gt;
Netcat (nc, ncat) - утилита, позволяющая устанавливать TCP и UDP соединения, принимать и передавать данные.&lt;br /&gt;
Основные режимы: подключения и прослушивания.&lt;br /&gt;
&lt;br /&gt;
Режим подключения позволяет подключиться к любому порту, открытому на прослушивание (при условии, что порт разрешает подключения такого типа).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 19.10.32.png|900px|Пример работы nc]]&lt;br /&gt;
&lt;br /&gt;
На примере с помощью nc осуществляется подключение к google.com: при вводе nc google.com 80 утилита подключается к серверной стороне по протоколу HTTP (80 - стандартный порт для этого протокола). Далее клиент отправляет на сервер простейший HTTP-запрос &amp;quot;GET /&amp;quot;, в ответ получает соответствующую веб-страницу, которая отображается в терминале в необработанном виде.&lt;br /&gt;
&lt;br /&gt;
Режим прослушивания позволяет открыть на прослушивание сокет на хосте с запущенной утилитой (поставив ему в соответствие порт, к которому смогут обращаться другие приложения). С помощью этого режима можно сделать подобие чата между двумя хостами (например, для передачи данных между двумя виртуальными машинами). Ссылка на демонстрацию приведена в конце статьи.&lt;br /&gt;
&lt;br /&gt;
==Netstat==&lt;br /&gt;
Netstat (Network Statistics) - утилита, позволяющая получить информацию о состоянии TCP-соединений (входящих и исходящих), таблицах маршрутизации, сетевых интерфейсах, сетевой статистике по протоколам.&lt;br /&gt;
&lt;br /&gt;
Для различных ОС реализации данной утилиты отличаются, одни и те же параметры могут отвечать за разные функции. Сводная таблица по ключам есть на английской странице Википедии по Netstat (ссылка приведена в конце статьи).&lt;br /&gt;
&lt;br /&gt;
Ниже - примеры, которые будут работать на большинстве UNIX-систем.&lt;br /&gt;
&lt;br /&gt;
===Примеры работы===&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 19.44.29.png|700px]]&lt;br /&gt;
&lt;br /&gt;
* -l - выводит информацию о состоянии всех открытых веб-сокетов (в состоянии LISTEN). По каждому сокету отображается информация о соответствующем ему порте. netstat -lt выведет информацию только о TCP-портах, netstat -lu - только о UDP-портах, netstat -lx - о UNIX-сокетах. Флаги t, u, x можно комбинировать между собой и добавлять ко всем флагам идущим ниже, получая соответствующую фильтрацию.&lt;br /&gt;
* -p - добавить в вывод PID и имя процесса, работающего на конкретном порту&lt;br /&gt;
* -n - отображать адреса и номера портов в числовом формате&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 19.54.47.png|600px|netstat -i]]&lt;br /&gt;
&lt;br /&gt;
* -i - информация о сетевых интерфейсах&lt;br /&gt;
* -ie - расширенная информация, аналог ifconfig&lt;br /&gt;
&lt;br /&gt;
=Tcpdump=&lt;br /&gt;
&lt;br /&gt;
Tcpdump - утилита, позволяющая перехватывать и анализировать сетевой трафик хоста, на котором запущена данная утилита. Также возможен анализ трафика, записанного в файл (*.pcap)&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-04 в 20.16.10.png|900px|tcpdump]]&lt;br /&gt;
&lt;br /&gt;
В данном примере используются следующие флаги:&lt;br /&gt;
* -i - перехватывать только пакеты с определенного сетевого интерфейса&lt;br /&gt;
* -с - только заданное количество пакетов&lt;br /&gt;
* -n - отображение в числовом формате&lt;br /&gt;
* -tttt - timestamp-ы в формате дата + время&lt;br /&gt;
* Если требуется собирать трафик, идущий на конкретный порт, его можно задать с помощью настройки port.&lt;br /&gt;
&lt;br /&gt;
Также Tcpdump позволяет задавать множество других настроек: IP-адреса хостов, отправляющих и получающих трафик, конкретные протоколы, параметры пакетов и т.п.&lt;br /&gt;
&lt;br /&gt;
=Wireshark=&lt;br /&gt;
Wireshark - программа для анализа сетевого трафика. По функциональности она аналогична Tcpdump, но имеет графический интерфейс и более широкий спектр возможностей. Также Wireshark поддерживает расширения, написанные на языке Lua.&lt;br /&gt;
&lt;br /&gt;
==Примеры работы==&lt;br /&gt;
Wireshark также позволяет анализировать как получаемый в режиме реального времени, так и записанный в файл трафик.&lt;br /&gt;
&lt;br /&gt;
Трафик можно собирать с использованием фильтров, можно выбрать уже готовый вариант или задать свой. На этом же окне Wireshark показывает, на каких интерфейсах есть сетевая активность.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-11 в 10.35.31.png|600px|Пример записи трафика в Wireshark]]&lt;br /&gt;
&lt;br /&gt;
Wireshark способен определить большинство существующих сетевых протоколов и предоставляет информацию для каждого пакета по всем доступным протоколам с учетом инкапсуляции.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-11 в 15.11.43.png|700px|Трафик Wireshark]]&lt;br /&gt;
&lt;br /&gt;
Также можно просматривать данные не по отдельным пакетам, а целыми стримами (красным обозначаются запросы клиента, синим - ответы сервера). Можно также искать в потоке определенное содержимое, исключать конкретные потоки из общего отображаемого трафика и сохранять содержимое потоков в виде текстовых файлов, в бинарном виде и в других форматах.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Снимок экрана 2021-04-11 в 15.16.59.png|700px|Wireshark - отдельный поток]]&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1h7n4APUbXhE3orszvUvhIZ7iqzTXTONZ/view?usp=sharing Презентация]&lt;br /&gt;
* [https://youtu.be/GED6HLt_cPI Видео]&lt;br /&gt;
* [https://habr.com/ru/post/336596/ Шпаргалка по самым простым примерам использования Netcat]&lt;br /&gt;
* [https://youtu.be/PTlgbwfytgw Пример - чат между хостами]&lt;br /&gt;
* [https://overthewire.org/wargames/bandit/bandit0.html Игра на использование nc и других утилит (задания на nc начинаются с уровня 13)]&lt;br /&gt;
* [https://en.wikipedia.org/wiki/Netstat#Parameters Сводная таблица по ключам Netstat для различных ОС]&lt;br /&gt;
* [https://putty.org.ru/articles/netstat-linux-examples.html Шпаргалка по Netstat]&lt;br /&gt;
* [https://habr.com/ru/post/204274/ Шпаргалка по Wireshark]&lt;br /&gt;
* [https://habr.com/ru/post/436226/ Еще одна шпаргалка по Wireshark]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=603</id>
		<title>Практикум на ЭВМ (2021)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=603"/>
		<updated>2021-10-14T20:35:51Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 609&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main_&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в принимающую систему. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2021)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
* http://club.tasks.prak.seclab.cs.msu.ru/ (deadline - 12.10.2021 15:53)&lt;br /&gt;
* http://corporate.tasks.prak.seclab.cs.msu.ru/ (deadline - 20.10.2021 20:13)&lt;br /&gt;
* http://bank.tasks.prak.seclab.cs.msu.ru (deadline - 20.10.2021 20:13)&lt;br /&gt;
* http://pwnitter.tasks.prak.seclab.cs.msu.ru/ (deadline - 20.10.2021 20:13)&lt;br /&gt;
* http://hard.tasks.prak.seclab.cs.msu.ru/ (deadline - 28.10.2021 15:30)&lt;br /&gt;
* http://jpg.tasks.prak.seclab.cs.msu.ru/ (deadline - 28.10.2021 15:30)&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2021) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (16 сентября 2021) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (23 сентября 2021) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (30 сентября 2021) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (7 октября 2021) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (14 октября 2021) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;diff=593</id>
		<title>Веб-безопасность/Базы данных SQL</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%92%D0%B5%D0%B1-%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%91%D0%B0%D0%B7%D1%8B_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_SQL&amp;diff=593"/>
		<updated>2021-09-27T20:30:39Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Теория==&lt;br /&gt;
&#039;&#039;&#039;База данных (БД)&#039;&#039;&#039; - представленная в объективной форме совокупность самостоятельных материалов (статей, расчётов, нормативных актов, судебных решений и иных подобных материалов), систематизированных таким образом, чтобы эти материалы могли быть найдены и обработаны с помощью ЭВМ.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Система управления баз данных (СУБД)&#039;&#039;&#039; - совокупность программных и лингвистических средств, обеспечивающих управление созданием и использованием баз данных.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Функции СУБД&#039;&#039;&#039;&lt;br /&gt;
#управление данными во внешней памяти (на дисках);&lt;br /&gt;
#управление данными в оперативной памяти с использованием дискового кэша;&lt;br /&gt;
#журнализация изменений, резервное копирование и восстановление базы данных после сбоев;&lt;br /&gt;
#поддержка языков БД&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Понятия ====&lt;br /&gt;
&#039;&#039;&#039;Тип данных&#039;&#039;&#039;&lt;br /&gt;
Значения данных, хранимые в реляционной базе данных, являются типизированными, т. е. известен тип каждого хранимого значения. Понятие типа данных в реляционной модели данных полностью соответствует понятию типа данных в языках программирования. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Домен&#039;&#039;&#039;&lt;br /&gt;
В общем виде домен определяется путем задания некоторого базового типа данных, к которому относятся элементы домена, и произвольного логического выражения, применяемого к элементу этого типа данных (ограничения домена). Элемент данных является элементом домена в том и только в том случае, если вычисление этого логического выражения дает результат истина (для логических значений мы будем попеременно использовать обозначения истина и ложь или true и false). С каждым доменом связывается имя, уникальное среди имен всех доменов соответствующей базы данных.&lt;br /&gt;
Наиболее правильной интуитивной трактовкой понятия домена является его восприятие как допустимого потенциального, ограниченного подмножества значений данного типа. Данные считаются сравнимыми только в том случае, когда они относятся к одному домену. &lt;br /&gt;
&lt;br /&gt;
Итак, &#039;&#039;&#039;заголовком&#039;&#039;&#039; (или схемой) отношения r (Hr) называется конечное множество упорядоченных пар вида &amp;lt;A, T&amp;gt;, где A называется именем атрибута, а T обозначает имя некоторого базового типа или ранее определенного домена. По определению требуется, чтобы все имена атрибутов в заголовке отношения были различны. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Кортежем&#039;&#039;&#039; tr, соответствующим заголовку Hr, называется множество упорядоченных триплетов вида &amp;lt;A, T, v&amp;gt;, по одному такому триплету для каждого атрибута в Hr. Третий элемент – v – триплета &amp;lt;A, T, v&amp;gt; должен являться допустимым значением типа данных или домена T. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Телом&#039;&#039;&#039; Br отношения r называется произвольное множество кортежей tr.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Значением&#039;&#039;&#039; Vr отношения r называется пара множеств Hr и Br.&lt;br /&gt;
В изменчивой реляционной базе данных хранятся отношения, значения которых изменяются во времени. Переменной VARr называется именованный контейнер, который может содержать любое допустимое значение Vr. Естественно, что при определении любой VARr требуется указывать соответствующий заголовок отношения Hr.&lt;br /&gt;
&lt;br /&gt;
====Первичный ключ====&lt;br /&gt;
&#039;&#039;&#039;Первичный ключ&#039;&#039;&#039; переменной отношения - такое подмножество S множества атрибутов ее заголовка, что в любое время значение первичного ключа (составное, если в состав первичного ключа входит более одного атрибута) в любом кортеже тела отношения отличается от значения первичного ключа в любом другом кортеже тела этого отношения, а никакое собственное подмножество) S этим свойством не обладает.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Свойства первичного ключа:&#039;&#039;&#039;&lt;br /&gt;
#характеризует кортеж&lt;br /&gt;
#уникальный &lt;br /&gt;
#не избыточный&lt;br /&gt;
&lt;br /&gt;
====Метаданные====&lt;br /&gt;
&#039;&#039;&#039;Метаданные&#039;&#039;&#039; - информация о другой информации, раскрывает сведения о признаках и свойствах, характеризующих какие-либо сущности, позволяющие автоматически искать и управлять ими в больших информационных потоках.&lt;br /&gt;
&lt;br /&gt;
== Основные операторы SQL ==&lt;br /&gt;
&lt;br /&gt;
Рассмотрим некоторые операторы SQL и примеры их применения. &lt;br /&gt;
&lt;br /&gt;
Допустим, имеются три таблицы: characters с полями (id, name, race, level, class), classes с полями (class_type, strength, dexterity, constitution, intelligence, wisdom, charisma) и monsters с полями (name, level), хранящиеся в базе данных heroes. &lt;br /&gt;
&lt;br /&gt;
==== База данных ====&lt;br /&gt;
&lt;br /&gt;
Для начала выведем базы данных, которые доступны.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; show databases(); &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для переключения на определенную базу данных, следует выполнить запрос&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; use heroes;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
При этом можно посмотреть все таблицы базы данных.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; show tables;&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для выяснения активных на данный момент базы данных и пользователя, используются соответствующие два запроса.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select database();&lt;br /&gt;
 select user();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для создания БД и таблиц в ней используются файлы инициализации (init-db.sql), написанные на языке sql запросов. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; source init-db.sql; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Аналогичный эффект будет получен, если напрямую вводить команды из файла в терминал. &amp;lt;br&amp;gt;&lt;br /&gt;
Note: если init-db.sql находится не в текущей папке, то следует прописать к нему путь. &lt;br /&gt;
&lt;br /&gt;
Для получения описания таблицы, следует перейти в соответствующую БД и вызвать &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; describe classes; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Таблицы ====&lt;br /&gt;
Теперь обратим внимание на таблицы.&lt;br /&gt;
&lt;br /&gt;
Сначала посмотрим все записи в таблице characters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from characters; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Если же требуется вывести только определенные колонки (например name и race), то запрос будет таким.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select name, race from characters; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вывода классов с харизмой выше 7 следует сформировать следующий запрос.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from classes where wisdom &amp;gt; 15; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
А для вывода все персонажей класса Bard понадобится такой запрос:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from characters where class=&#039;Bard&#039;; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Далее выведем число персонажей каждого класса.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select class, count(class) as num_of_class from characters group by class; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Если же нужно вывести персонажей с уникальным классом, то к предыдущему запросу следует добавить условие с помощью having.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select class, count(class) as num_of_class from characters group by class having num_of_class = 1; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для упорядочивания используется order by. Пера метры в квадратных скобках необязательные, обозначают упорядочивание по возрастанию|по убыванию&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from classes order by  level [asc|desc]; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Для вывода первых нескольких(5) записей таблицы используется запрос &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt; select * from classes limit 5; &amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если хотим вывести список персонажей со всеми их характеристиками, то сформируем следующий запрос. &lt;br /&gt;
В нем таблицы characters и classes объединяются по колонкам class и class_type соответственно. &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select * from characters &lt;br /&gt;
 inner join classes &lt;br /&gt;
 on characters.class = classes.class_type;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Если хотим вывести все имена и уровни персонажей и монстров, сформируем следующий запрос.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select name, level from characters &lt;br /&gt;
 union &lt;br /&gt;
 select name, level from monsters;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Первая строчка выберет все имена и уровни из таблицы characters, третья выберет все имена и уровни из таблицы monsters, а вторая объединит записи. &lt;br /&gt;
Важно учитывать, общее число в обеих таблицах должно совпадать, а так же соответствующие  друг другу столбцы разных таблиц должны быть одного типа.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Также можно формировать более сложные запросы. Например запрос &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;SQL&amp;quot;&amp;gt;&lt;br /&gt;
 select name, class from characters &lt;br /&gt;
 where class in&lt;br /&gt;
 (select class_type from classes where wisdom &amp;gt; 11)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
выводит имена и классы всех персонажей, мудрость которых выше 11. &lt;br /&gt;
В первой строчке идет выбор столбцов имени и класса; в третьей - из таблицы classes выбираются названия только тех классов, мудрость которых выше 11; а вторая проверяет вхождение класса персонажа в множество подходящих классов.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Данным списком не исчерпывается множество операторов и запросов. Подробнее можно почитать например [http://2sql.ru/ здесь] или обратиться к документации (man, help).&lt;br /&gt;
&lt;br /&gt;
==Ссылки==&lt;br /&gt;
* [https://yadi.sk/d/o4cFtxls-WlUAw/%D0%A1%D0%B5%D0%BC%D0%B8%D0%BD%D0%B0%D1%80%202.%2024%20%D1%81%D0%B5%D0%BD%D1%82%D1%8F%D0%B1%D1%80%D1%8F.mp4?w=1 видео &amp;quot;Базы данных. SQL&amp;quot;]&lt;br /&gt;
* [https://drive.google.com/file/d/1fK2wcYZmJhpZUKwC-jKVbiozbWHEEDbc/view?usp=sharing Презентация]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=591</id>
		<title>Практикум на ЭВМ (2021)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)&amp;diff=591"/>
		<updated>2021-09-16T12:58:41Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 609&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2021/2022 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;.&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main__&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в принимающую систему. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2021)/Бонусное_задание|Бонусное задание]]&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (9 сентября 2021) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=590</id>
		<title>Практикум на ЭВМ (2021)/Бонусное задание</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2021)/%D0%91%D0%BE%D0%BD%D1%83%D1%81%D0%BD%D0%BE%D0%B5_%D0%B7%D0%B0%D0%B4%D0%B0%D0%BD%D0%B8%D0%B5&amp;diff=590"/>
		<updated>2021-09-16T12:58:14Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «==Формулировка== Вам нужно написать маленькое веб-приложение, в котором для хранения данн…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Формулировка==&lt;br /&gt;
Вам нужно написать маленькое веб-приложение, в котором для хранения данных будет использоваться SQL-база данных.&lt;br /&gt;
В базе данных должно быть две таблицы, хранящие данные о пользователях приложения. Первая таблица должна называться &#039;&#039;&#039;&amp;quot;users&amp;quot;&#039;&#039;&#039; и иметь следующие колонки:&lt;br /&gt;
* id пользователя (число) - должно быть уникальным для каждого пользователя&lt;br /&gt;
* login - имя пользователя (строка)&lt;br /&gt;
* money_amount (число)&lt;br /&gt;
* card_number - (строка) номер его кредитной карты (кстати, правдоподобные номера карт можно брать [http://www.getcreditcardnumbers.com/ тут])&lt;br /&gt;
* status - статус активен/неактивен (любой тип данных по выбору, главное, чтобы было два различимых значения).&lt;br /&gt;
Вторая таблица должна хранить пароли пользователей, в ней должно быть две колонки: id пользователя и собственно пароль. Имя этой второй таблицы может быть произвольным.&lt;br /&gt;
Вместе с кодом приложения должен поставляться скрипт &amp;quot;init-db.sql&amp;quot;, который инициализирует эти таблицы, т. е. создает их (CREATE TABLE) и заполняет данными (INSERT). Всего должно быть не меньше 5 пользователей, минимум 3 активных, соответственно, минимум 2 неактивных. У первого активного пользователя должно быть имя &amp;quot;admin&amp;quot;. У каждого пользователя в таблице с паролями должен лежать пароль.&lt;br /&gt;
* Веб-приложение должно по url &amp;quot;/users&amp;quot; отдавать страницу со списком АКТИВНЫХ пользователей, на каждой строке списка должен быть id, имя пользователя. Оформить список можно как bullet list или таблицу или как хотите, главное, чтобы данные пользователей были на разных строках и чтобы смотреть было не больно. Данные для списка должны получаться SQL-запросом из базы (SELECT), а не быть вписанными в код вручную, то есть, если добавить в базу еще одного активного пользователя, он должен появиться при следующем заходе на страницу в списке. Определять активный пользователь или нет должен SQL-запрос по значению поля &amp;quot;status&amp;quot;.&lt;br /&gt;
* Должна быть выборка пользователей по login и id, данные в ней должны быть такие же как в выборке всех пользователей по &amp;quot;/users&amp;quot;. Параметр, по которому должен отбираться пользователь, передается в параметре query string. То есть:&lt;br /&gt;
** по url &amp;quot;/by-login?login=admin&amp;quot; должна выдаваться страница с данными пользователя c именем &amp;quot;admin&amp;quot;. Ну и если не &amp;quot;admin&amp;quot; а другое имя, то инфа о пользователе с таким именем, а если такого пользователя не существует, то пусть что угодно происходит (хоть ошибка, хоть пустая страница)&lt;br /&gt;
** по url &amp;quot;/by-id?id=3&amp;quot; должны выдаваться данные пользователя с id=3 и т.д. &lt;br /&gt;
На главной странице приложения может быть что угодно, главное, чтобы там была ссылка на &amp;quot;/users&amp;quot;, а также либо формы, где можно указать login и id (чтобы потом сделать соответствующий запрос), либо просто ссылки - примеры (например ссылки на url &amp;quot;/by-login?login=admin&amp;quot; и &amp;quot;/by-id?id=3&amp;quot;).&lt;br /&gt;
База данных может быть любой. Язык программирования/фреймворк/веб-сервер тоже любой. Если совсем не знаете на каком языке писать, возьмите тот на котором написать будет легче/быстрее, например, PHP или Python.&lt;br /&gt;
&lt;br /&gt;
==Критерии==&lt;br /&gt;
Чтобы засчитать задание, вы должны прислать ссылку на код своего мини-приложения на почту: OkunevaA@seclab.cs.msu.ru. К коду обязательно должен прилагаться &#039;&#039;&#039;README&#039;&#039;&#039;, где есть список всех зависимостей (всего, что ваш код использует) и есть инструкция по установке/запуску. Кроме того, обязательно должен присутствовать файл &#039;&#039;&#039;&amp;quot;init-db.sql&amp;quot;&#039;&#039;&#039;. Приложение должно запускаться и правильно отрабатывать (отдавать список пользователей из базы). Автором присланного кода должны быть вы сами, запрещается присылать приложение, сделанное кем-то еще. В своем сообщении или теме письма не забудьте указать по какому поводу пишете (например &amp;quot;Задание по SQL по практикуму на ЭВМ&amp;quot; и ФИО).&lt;br /&gt;
&lt;br /&gt;
==Дедлайн и баллы==&lt;br /&gt;
Те, кто пришлёт работающее и отвечающее критериям приложение до 9:00 17 сентября, получат за задание 120 баллов. (сверх тех 2000 баллов, которые будут даваться за основные задания). Приславшие между 9:00 и 21:00 17 сентября получат за задание 80 баллов.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;21:00 17 сентября - крайний срок приёма задания.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Приславшие засчитанное приложение первыми получат дополнительный бонус. Также отдельный бонус получит приложение, которое выглядит приятнее всего (но при этом отвечает требованиям)&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2020)&amp;diff=512</id>
		<title>Практикум на ЭВМ (2020)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2020)&amp;diff=512"/>
		<updated>2021-04-20T16:49:31Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Сетевая безопасность */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 612&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2020/2021 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;. Критерии такие:&lt;br /&gt;
* &#039;&#039;&#039;2000&#039;&#039;&#039; и больше будут давать оценку &amp;quot;отлично&amp;quot;.&lt;br /&gt;
* баллы &amp;gt;= &#039;&#039;&#039;1000&#039;&#039;&#039;, но меньше &#039;&#039;&#039;2000&#039;&#039;&#039; будут давать оценку &amp;quot;хорошо&amp;quot;&lt;br /&gt;
* баллы &amp;gt;= &#039;&#039;&#039;500&#039;&#039;&#039;, но меньше &#039;&#039;&#039;1000&#039;&#039;&#039; будут давать оценку &amp;quot;удовлетворительно&amp;quot;&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main__&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2020)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 01.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://jpg.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 01.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://hard.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 01.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 10.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 10.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 10.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://seeker.shanton.ru:8081&amp;lt;/s&amp;gt;, дамп контейнера - https://yadi.sk/d/BV0UynXuOJmnBg (deadline - 23.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://shop.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 23.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://tiny.dong.solutions:28080&amp;lt;/s&amp;gt; (нужно использовать droog@tiny.dong.solutions) (deadline - 23.12.2020 1:53)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://drive.google.com/file/d/1ENAVVDKlKIGgELZh6sCaP1wJ4SiOAYwz/view?usp=sharing task 5]&amp;lt;/s&amp;gt; nc tasks.prak.seclab.cs.msu.ru 16965 (deadline 21.12.2020 0:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://drive.google.com/file/d/1ZImdhu0o6KHdCoz6O8n2CD2FWa2Wk0js/view?usp=sharing task 6]&amp;lt;/s&amp;gt; nc tasks.prak.seclab.cs.msu.ru 16966 (deadline 21.12.2020 0:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://drive.google.com/file/d/1R55Q3Czxd4Wu_hVP1lAK2vSkJcxmh9wg/view?usp=sharing task 7]&amp;lt;/s&amp;gt; nc tasks.prak.seclab.cs.msu.ru 16967 (deadline 21.12.2020 0:00)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: &amp;lt;s&amp;gt;[https://khashaev.ru/secsem/rsa/#broadcast broadcast]&amp;lt;/s&amp;gt;, &amp;lt;s&amp;gt;[https://khashaev.ru/secsem/rsa/#common-sense common-sense]&amp;lt;/s&amp;gt; (deadline - 29.03.2021 1:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|&amp;lt;s&amp;gt;Задание на блочные шифры&amp;lt;/s&amp;gt;]] (deadline - 16.04.2021 1:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_padding_oracle|Задание на padding oracle]] (deadline - 21.04.2021 14:00)&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
=== Мобильные приложения ===&lt;br /&gt;
&lt;br /&gt;
Обход проверки root-доступа [[Root_check_bypass]]&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (17 сентября 2020) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (24 сентября 2020) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (1 октября 2020) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (8 октября 2020) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (15 октября 2020) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (22 октября 2020) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (29 октября 2020) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (5 ноября 2020) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 9 (12 ноября 2020) [[Бинарные_уязвимости/Stack_overflow]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (19 ноября 2020) [[Бинарные_уязвимости/Off-by-one]]&lt;br /&gt;
&lt;br /&gt;
Семинар 11 (26 ноября 2020) [[Бинарные_уязвимости/House-of-force]]&lt;br /&gt;
&lt;br /&gt;
Семинар 12 (3 декабря 2020) [[Бинарные_уязвимости/cve-2019-5782]]&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
Семинар 14 (10 декабря 2020) [[Уязвимости_мобильных_приложений/1]]&lt;br /&gt;
&lt;br /&gt;
Семинар 15 (17 декабря 2020) [[Уязвимости_мобильных_приложений/2]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
Семинар 1 (15 февраля 2021) [[Введение в практическую безопасность (2019)/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (1 марта 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (15 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
Семинар 5 (5 апреля 2021) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (12 апреля 2021) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2020)&amp;diff=511</id>
		<title>Практикум на ЭВМ (2020)</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%9F%D1%80%D0%B0%D0%BA%D1%82%D0%B8%D0%BA%D1%83%D0%BC_%D0%BD%D0%B0_%D0%AD%D0%92%D0%9C_(2020)&amp;diff=511"/>
		<updated>2021-04-20T16:49:17Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: /* Сетевая безопасность */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&#039;&#039;&#039;Практикум на ЭВМ&#039;&#039;&#039; кафедры ИБ ВМК МГУ ведут сотрудники лаборатории интеллектуальных систем кибербезопасности для групп 319/1 и 319/2.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;Когда&#039;&#039;&#039;: по четвергам, 12:50&lt;br /&gt;
* &#039;&#039;&#039;Где&#039;&#039;&#039;: аудитория 612&lt;br /&gt;
&lt;br /&gt;
Практикум связан с курсом &amp;quot;Безопасность компьютерных систем&amp;quot;, который читается для группы 319/2, и содержит практические задания по темам курса. Каждое занятие практикума имеет формат воркшопа/семинара - т.е. занятие будет практическим, на него надо приходить с ноутбуком, а также установленным софтом. Набор нужного для занятия софта объявляется отдельно перед занятием.&lt;br /&gt;
&lt;br /&gt;
Основные темы, которые будут затронуты в практикуме 2020/2021 учебного года:&lt;br /&gt;
* веб-безопасность&lt;br /&gt;
* реверс-инжиниринг и эксплуатация бинарных программ&lt;br /&gt;
* криптография&lt;br /&gt;
* сетевая безопасность&lt;br /&gt;
&lt;br /&gt;
Оценка за практикум будет определяться по результатам выполнения практических заданий. За каждое из заданий будут даваться баллы, сумма баллов и определит оценку. Задания будут делиться на обязательные и бонусные, баллы за все обязательные задания одной темы будут в сумме давать &#039;&#039;&#039;1000&#039;&#039;&#039;, таким образом, баллы за все обязательные задания одного семестра вместе дадут &#039;&#039;&#039;2000&#039;&#039;&#039;. Критерии такие:&lt;br /&gt;
* &#039;&#039;&#039;2000&#039;&#039;&#039; и больше будут давать оценку &amp;quot;отлично&amp;quot;.&lt;br /&gt;
* баллы &amp;gt;= &#039;&#039;&#039;1000&#039;&#039;&#039;, но меньше &#039;&#039;&#039;2000&#039;&#039;&#039; будут давать оценку &amp;quot;хорошо&amp;quot;&lt;br /&gt;
* баллы &amp;gt;= &#039;&#039;&#039;500&#039;&#039;&#039;, но меньше &#039;&#039;&#039;1000&#039;&#039;&#039; будут давать оценку &amp;quot;удовлетворительно&amp;quot;&lt;br /&gt;
Большая часть заданий будет выполнена в формате ctf-тасков&amp;lt;ref&amp;gt;Про CTF и CTF-команду [[Bushwhackers]]&amp;lt;/ref&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Задания ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Задания выполнены в формате task-based CTF: в каждом задании есть один или несколько &amp;quot;флагов&amp;quot;, выполняющих роль ценных данных, которые требуется найти и украсть атакующему, для выполнения задания необходимо получить флаг и сдать его в принимающую систему. За каждый сданный флаг начисляются очки. Флаг представляет из себя строку, которая может состоять из цифр и букв английского алфавита, а также нижних подчеркиваний (&amp;quot;_&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
Флаги, входящие в обязательную часть, будут начинаться с префикса main__&lt;br /&gt;
&lt;br /&gt;
Флаги нужно сдавать в [https://dashboard.prak.seclab.cs.msu.ru/ принимающую систему]. В ней нужно заранее зарегистрироваться (ник в формате &#039;&#039;Фамилия Имя&#039;&#039;) и дождаться активации, без этого сдавать флаги не получится Флаги время от времени меняются, если вы получили флаг, но он не сдается, попробуйте вытащить его еще раз и сдать снова - возможно, он поменялся как раз в тот момент. Флаг за одно и то же задание засчитывается для того же сдающего только один раз (даже после изменения).&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[[Практикум_на_ЭВМ_(2020)/Бонусное_задание|Бонусное задание]]&amp;lt;/s&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;http://club.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 01.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://jpg.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 01.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://hard.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 01.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://bank.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 10.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://corporate.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 10.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://pwnitter.tasks.prak.seclab.cs.msu.ru/&amp;lt;/s&amp;gt; (deadline - 10.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://seeker.shanton.ru:8081&amp;lt;/s&amp;gt;, дамп контейнера - https://yadi.sk/d/BV0UynXuOJmnBg (deadline - 23.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://shop.tasks.prak.seclab.cs.msu.ru&amp;lt;/s&amp;gt; (deadline - 23.12.2020 1:53)&lt;br /&gt;
* &amp;lt;s&amp;gt;http://tiny.dong.solutions:28080&amp;lt;/s&amp;gt; (нужно использовать droog@tiny.dong.solutions) (deadline - 23.12.2020 1:53)&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://drive.google.com/file/d/1ENAVVDKlKIGgELZh6sCaP1wJ4SiOAYwz/view?usp=sharing task 5]&amp;lt;/s&amp;gt; nc tasks.prak.seclab.cs.msu.ru 16965 (deadline 21.12.2020 0:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://drive.google.com/file/d/1ZImdhu0o6KHdCoz6O8n2CD2FWa2Wk0js/view?usp=sharing task 6]&amp;lt;/s&amp;gt; nc tasks.prak.seclab.cs.msu.ru 16966 (deadline 21.12.2020 0:00)&lt;br /&gt;
* &amp;lt;s&amp;gt;[https://drive.google.com/file/d/1R55Q3Czxd4Wu_hVP1lAK2vSkJcxmh9wg/view?usp=sharing task 7]&amp;lt;/s&amp;gt; nc tasks.prak.seclab.cs.msu.ru 16967 (deadline 21.12.2020 0:00)&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
&lt;br /&gt;
* RSA: &amp;lt;s&amp;gt;[https://khashaev.ru/secsem/rsa/#broadcast broadcast]&amp;lt;/s&amp;gt;, &amp;lt;s&amp;gt;[https://khashaev.ru/secsem/rsa/#common-sense common-sense]&amp;lt;/s&amp;gt; (deadline - 29.03.2021 1:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_блочные_шифры|&amp;lt;s&amp;gt;Задание на блочные шифры&amp;lt;/s&amp;gt;]] (deadline - 16.04.2021 1:53)&lt;br /&gt;
* [[Практикум_на_ЭВМ_(2020)/Задание_на_padding_oracle|Задание на padding oracle]] (deadline - 21.04.2021 14:00)&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
&lt;br /&gt;
=== Мобильные приложения ===&lt;br /&gt;
&lt;br /&gt;
Обход проверки root-доступа [[Root_check_bypass]]&lt;br /&gt;
&lt;br /&gt;
== Материалы ==&lt;br /&gt;
&lt;br /&gt;
=== Веб ===&lt;br /&gt;
&lt;br /&gt;
Семинар 1 (17 сентября 2020) [[Веб-безопасность/Введение в веб-технологии]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (24 сентября 2020) [[Веб-безопасность/Базы_данных_SQL]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (1 октября 2020) [[Веб-безопасность/Уязвимости_SQLi]]&lt;br /&gt;
&lt;br /&gt;
Семинар 4 (8 октября 2020) [[Веб-безопасность/Уязвимости_XSS]]&lt;br /&gt;
&lt;br /&gt;
Семинар 5 (15 октября 2020) [[Веб-безопасность/Уязвимости_FileUpload]]&lt;br /&gt;
&lt;br /&gt;
Семинар 6 (22 октября 2020) [[Веб-безопасность/Атаки_SSRF]]&lt;br /&gt;
&lt;br /&gt;
Семинар 7 (29 октября 2020) [[Веб-безопасность/Уязвимости_XXE]]&lt;br /&gt;
&lt;br /&gt;
=== Реверс-инжиниринг и бинарная эксплуатация ===&lt;br /&gt;
&lt;br /&gt;
Семинар 8 (5 ноября 2020) [[Бинарные_уязвимости/Инструменты_поиска_бинарных_уязвимостей]]&lt;br /&gt;
&lt;br /&gt;
Семинар 9 (12 ноября 2020) [[Бинарные_уязвимости/Stack_overflow]]&lt;br /&gt;
&lt;br /&gt;
Семинар 10 (19 ноября 2020) [[Бинарные_уязвимости/Off-by-one]]&lt;br /&gt;
&lt;br /&gt;
Семинар 11 (26 ноября 2020) [[Бинарные_уязвимости/House-of-force]]&lt;br /&gt;
&lt;br /&gt;
Семинар 12 (3 декабря 2020) [[Бинарные_уязвимости/cve-2019-5782]]&lt;br /&gt;
&lt;br /&gt;
=== Уязвимости мобильных приложений ===&lt;br /&gt;
&lt;br /&gt;
Семинар 14 (10 декабря 2020) [[Уязвимости_мобильных_приложений/1]]&lt;br /&gt;
&lt;br /&gt;
Семинар 15 (17 декабря 2020) [[Уязвимости_мобильных_приложений/2]]&lt;br /&gt;
&lt;br /&gt;
=== Криптография и криптоанализ ===&lt;br /&gt;
Семинар 1 (15 февраля 2021) [[Введение в практическую безопасность (2019)/Асимметричная криптография на примере RSA]]&lt;br /&gt;
&lt;br /&gt;
Семинар 2 (1 марта 2021) [[Криптография/Блочные шифры. Атаки на блочные шифры]]&lt;br /&gt;
&lt;br /&gt;
Семинар 3 (15 марта 2021) [[Криптография/Атака Padding oracle на RSA]]&lt;br /&gt;
&lt;br /&gt;
=== Сетевая безопасность ===&lt;br /&gt;
Семинар 5 (5 апреля 2021) [[Сетевая безопасность/Анализ сетевого трафика]]&lt;br /&gt;
Семинар 6 (12 апреля 2021) [[Сетевая безопасность/Сетевой стек и DNS]]&lt;br /&gt;
&lt;br /&gt;
== Примечания ==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA_%D0%B8_DNS&amp;diff=510</id>
		<title>Сетевая безопасность/Сетевой стек и DNS</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%B0%D1%8F_%D0%B1%D0%B5%D0%B7%D0%BE%D0%BF%D0%B0%D1%81%D0%BD%D0%BE%D1%81%D1%82%D1%8C/%D0%A1%D0%B5%D1%82%D0%B5%D0%B2%D0%BE%D0%B9_%D1%81%D1%82%D0%B5%D0%BA_%D0%B8_DNS&amp;diff=510"/>
		<updated>2021-04-20T16:47:49Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: Новая страница: «Рассмотрим, что будет происходить, когда Вы набираете URL в браузере и жмете Enter на примере…»&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Рассмотрим, что будет происходить, когда Вы набираете URL в браузере и жмете Enter на примере запроса &amp;quot;google.com&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=URL или нет?=&lt;br /&gt;
Браузер определяет, что перед ним - URL или поисковый запрос. Если в запросе не получилось выделить протокол или доменное имя, браузер отправляет запрос в поиск, установленный по умолчанию.&lt;br /&gt;
&lt;br /&gt;
==Это URL==&lt;br /&gt;
Поскольку в запросе &amp;quot;google.com&amp;quot; удалось распознать доменное имя, браузер будет обращаться к соответствующему веб-ресурсу. У браузера есть следующая информация (т.к. не указано иное):&lt;br /&gt;
# Использовать протокол HTTP&lt;br /&gt;
# Показать главную страницу («/»)&lt;br /&gt;
&lt;br /&gt;
==Проверка HSTS==&lt;br /&gt;
Браузер проверяет, не находится ли сайт в списке preloaded HSTS (HTTP Strict Transport Security). Если да, обращение произойдет по HTTPS.&lt;br /&gt;
&lt;br /&gt;
Сайт может не находиться в списке, но придерживаться политике HSTS, тогда на первый HTTP-запрос от пришлет ответ, содержащий информацию, что к нему требуется обращаться по HTTPS.&lt;br /&gt;
&lt;br /&gt;
=DNS=&lt;br /&gt;
Далее необходимо определить IP-адрес соответствующего веб-ресурса.&lt;br /&gt;
&lt;br /&gt;
Первым делом браузер проверит свой DNS-кэш.&lt;br /&gt;
&lt;br /&gt;
[[Файл:DNS-кэш.png|700px|DNS-кэш]]&lt;br /&gt;
&lt;br /&gt;
Затем браузер вызывает библиотечную функцию gethostbyname. Осуществляется проверка наличия нужной записи в файле hosts.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Содержимое файла hosts.png|500px|Содержимое файла hosts]]&lt;br /&gt;
&lt;br /&gt;
Если не удалось найти нужный адрес в DNS кэше и файле hosts, gethostbyname отправляет ARP-запрос к сетевому DNS-серверу.&lt;br /&gt;
&lt;br /&gt;
Если DNS-сервер, находится в той же подсети, то ARP-запрос отправляется напрямую этому серверу.&lt;br /&gt;
&lt;br /&gt;
Если в другой подсети - запрос отправляется на IP-адрес шлюза по умолчанию (default gateway).&lt;br /&gt;
&lt;br /&gt;
==ARP==&lt;br /&gt;
&lt;br /&gt;
ARP (Address Resolution Protocol) — протокол канального уровня, предназначенный для определения MAC-адреса по IP-адресу.&lt;br /&gt;
&lt;br /&gt;
===Принцип работы===&lt;br /&gt;
* A и B соединены по Ethernet. A известен IP-адрес B. A хочет передать B пакет данных.&lt;br /&gt;
* Задача: узнать MAC-адрес B.&lt;br /&gt;
* Принцип работы: A отправляет broadcast ARP-запрос по сегменту сети: «Хост с IP-адресом &amp;lt;ip_b&amp;gt;, сообщите свой MAC-адрес хосту с MAC-адресом &amp;lt;mac_a&amp;gt;».&lt;br /&gt;
* B получает ARP-запрос и отправляет A ARP-ответ со своим MAC.&lt;br /&gt;
&lt;br /&gt;
==Запрос к DNS-серверу==&lt;br /&gt;
Перед отправкой запроса осуществляется проверка ARP-кэша на предмет наличия нужного IP-адреса.&lt;br /&gt;
&lt;br /&gt;
[[Файл:ARP-кэш.png|600px|ARP-кэш]]&lt;br /&gt;
&lt;br /&gt;
После этого проверяется таблица маршрутизации — это делается для того, чтобы узнать, есть ли искомый IP-адрес в какой-либо из подсетей локальной таблицы.&lt;br /&gt;
&lt;br /&gt;
На этом этапе мы знаем MAC-адрес локального DNS-сервера (или DNS-сервера на стороне провайдера)&lt;br /&gt;
&lt;br /&gt;
==DNS lookup==&lt;br /&gt;
По UDP отправляется запрос локальному DNS серверу (на 53 порт).&lt;br /&gt;
&lt;br /&gt;
DNS-сервер возвращает ответ. Если он «не знает» нужный IP, запускается рекурсивный поиск (пока не найдется SOA запись).&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dns-lookup.png|600px|DNS lookup]]&lt;br /&gt;
&lt;br /&gt;
==Подробнее про DNS==&lt;br /&gt;
DNS (Domain Name System) - распределенная система для получения информации о доменах (например, получения IP-адреса по имени хоста, получения информации о маршрутизации почты).&lt;br /&gt;
&lt;br /&gt;
===Запись DNS===&lt;br /&gt;
Запись состоит из следующих полей:&lt;br /&gt;
* имя (NAME) - доменное имя&lt;br /&gt;
* тип (TYPE)&lt;br /&gt;
* класс (CLASS) - тип сети. DNS была разработана как система, потенциально совместимая не только с TCP/IP стеком, но и с другими возможными типами сетей. Фактически это поле обычно содержит значение IN (означает Internet), но очень редко встречаются другие классы (см. ссылку в конце статьи).&lt;br /&gt;
* TTL - допустимое время хранения кэшированной записи на DNS-сервере&lt;br /&gt;
* длина поля данных (RDLEN) - содержится в некоторых типах записей&lt;br /&gt;
* поле данных (RDATA) - содержится в некоторых типах записей&lt;br /&gt;
&lt;br /&gt;
===Типы записей===&lt;br /&gt;
* A - связывает имя хоста с адресом протокола IPv4&lt;br /&gt;
* AAAA - связывает имя хоста с адресом протокола IPv6&lt;br /&gt;
* CNAME (canonical name record) - псевдоним, переправление на другое имя&lt;br /&gt;
* MX (mail exchange) - сервер обмена почтой для данного домена&lt;br /&gt;
* NS (name server) - DNS-сервер для данного домена&lt;br /&gt;
* PTR (pointer) - обратная DNS-запись, связывает IP с FQDN&lt;br /&gt;
* SOA (start of authority) - указывает, на каком сервере хранится эталонная информация о данном домене&lt;br /&gt;
&lt;br /&gt;
===DNS клиент===&lt;br /&gt;
DNS клиент - утилита, позволяющая осуществить доступ к системе DNS.&lt;br /&gt;
&lt;br /&gt;
Примеры:&lt;br /&gt;
* nslookup&lt;br /&gt;
* dig&lt;br /&gt;
* Альтернативы с GUI&lt;br /&gt;
&lt;br /&gt;
По умолчанию dig осуществляет поиск записи типа A:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig.png|600px|dig]]&lt;br /&gt;
&lt;br /&gt;
Флаг -t позволяет задать желаемый тип записи:&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig -t.png|700px|dig -t]]&lt;br /&gt;
&lt;br /&gt;
Опция +short позволяет опустить всю дополнительную информацию, будет выведен только IP-адрес.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Dig +short.png|600px|dig +short]]&lt;br /&gt;
&lt;br /&gt;
===Scapy===&lt;br /&gt;
Также можно просто вручную создать UDP-пакет и отправить его на DNS-сервер.&lt;br /&gt;
&lt;br /&gt;
Для этого можно использовать Scapy - библиотеку для манипулирования сетевыми пакетами на языке Python. Она позволяет собрать сетевой пакет по уровням сетевого стека.&lt;br /&gt;
&lt;br /&gt;
====Пример: отправка Ping на google.com====&lt;br /&gt;
&lt;br /&gt;
[[Файл:Ping с помощью Scapy.png|600px|Ping с помощью Scapy]]&lt;br /&gt;
&lt;br /&gt;
Для формирования пакета p необходимо задать тип пакета на уровне протокола ICMP (на самом деле, в случае типа &amp;quot;echo-request&amp;quot; это не обязательно, так как этот тип будет установлен по умолчанию) и адрес получателя на уровне протокола IP.&lt;br /&gt;
&lt;br /&gt;
Далее отправляем пакет с помощью функции sr1, ответ окажется в переменной r.&lt;br /&gt;
&lt;br /&gt;
В результате в r окажется пакет типа echo-reply.&lt;br /&gt;
&lt;br /&gt;
====Пример: DNS запрос====&lt;br /&gt;
&lt;br /&gt;
[[Файл:DNS запрос с посощью Scapy.png|700px|DNS запрос с посощью Scapy]]&lt;br /&gt;
&lt;br /&gt;
Необходимо указать:&lt;br /&gt;
* Для уровня протокола DNS - разрешить рекурсивный поиск (параметр rd) и указать содержимое запроса&lt;br /&gt;
* Для уровня протокола UDP - указать порт (на самом деле, поскольку указан протокол DNS, обращение по умолчанию произойдет на 53 порт, так что достаточно просто обозначить, что обращение должно осуществляться по протоколу UDP, что видно далее в примере)&lt;br /&gt;
* Для уровня протокола IP - адрес локального DNS-сервера&lt;br /&gt;
&lt;br /&gt;
В результате в пакете r получаем DNS-ответ.&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
Исторически сложилось, что DNS разрабатывалась только как распределенная система, поэтому она не защищает пользователя от подмены предоставляемых ему данных.&lt;br /&gt;
&lt;br /&gt;
Пример атаки: DNS cache poisoning - кэш доменных имен изменяется с целью возврата ложного IP-адреса.&lt;br /&gt;
&lt;br /&gt;
DNSSEC - набор расширений DNS, направленный на обеспечение защиты клиентов от фальшивых данных. Все ответы DNSSEC имеют цифровую подпись, используется асимметричное шифрование. &lt;br /&gt;
&lt;br /&gt;
DNSSEC не обеспечивает конфиденциальность данных, осуществляется только аутентификация отправляемых данных, сами данные не шифруются.&lt;br /&gt;
&lt;br /&gt;
===WHOIS===&lt;br /&gt;
WHOIS - протокол прикладного уровня (и одноименная утилита для обращений к нему), базирующийся на протоколе TCP для получения информации о владельцах доменных имен и IP-адресов.&lt;br /&gt;
&lt;br /&gt;
Используется для доступа к публичным серверам баз данных регистраторов IP-адресов и доменных имён.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Whois.png|600px|whois]]&lt;br /&gt;
&lt;br /&gt;
=Установка соединения=&lt;br /&gt;
На этом этапе у нас есть IP-адрес нужного веб ресурса и порт для установки соединения.&lt;br /&gt;
&lt;br /&gt;
Браузер осуществляет вызов функции socket системной библиотеки и запрашивает поток TCP сокета - AF_INET и SOCK_STREAM, формируется пакет для передачи.&lt;br /&gt;
&lt;br /&gt;
==Формирование пакета==&lt;br /&gt;
* Транспортный уровень - собирается TCP-сегмент. В заголовок добавляется порт назначения, исходный порт выбирается из динамического пула ядра.&lt;br /&gt;
* Сетевой уровень - добавляется дополнительный IP-заголовок. Также включаются IP-адрес сервера назначения и адрес текущей машины — после этого пакет сформирован.&lt;br /&gt;
* Канальный уровень - добавляется заголовок кадра, включающий MAC-адрес сетевой карты компьютера, а также MAC-адрес шлюза. Если ядру ничего не известно о MAC-адресе шлюза, то для его нахождения отправляется широковещательный ARP-запрос.&lt;br /&gt;
&lt;br /&gt;
==Отправка пакета==&lt;br /&gt;
По Ethernet/WiFi пакет доберётся до маршрутизатора, управляющего локальной подсетью. Затем он отправится на следующий роутер и т.д., пока не доберётся до сервера назначения. &lt;br /&gt;
&lt;br /&gt;
Каждый маршрутизатор на пути будет извлекать адрес назначения из IP-заголовка и отправлять пакет на следующий хоп, уменьшая TTL. Если значение поля TTL достигнет нуля, пакет будет отброшен (это произойдёт также если у маршрутизатора не будет места в текущей очереди — например, из-за перегрузки сети).&lt;br /&gt;
&lt;br /&gt;
==TCP соединение==&lt;br /&gt;
# Клиент выбирает номер начальной последовательности (ISN) и отправляет пакет серверу с установленным битом SYN для открытия соединения.&lt;br /&gt;
# Сервер получает пакет с битом SYN и, если готов к установлению соединения, то:&lt;br /&gt;
* Выбирает собственный номер начальной последовательности;&lt;br /&gt;
* Устанавливает SYN-бит, чтобы сообщить о выборе начальной последовательности;&lt;br /&gt;
* Копирует ISN клиента +1 в поле ACK и добавляет ACK-флаг для обозначения подтверждения получения первого пакета.&lt;br /&gt;
# Клиент подтверждает соединение путём отправки пакета:&lt;br /&gt;
* Увеличивает номер своей начальной последовательности;&lt;br /&gt;
* Увеличивает номер подтверждения получения;&lt;br /&gt;
* Устанавливает поле ACK.&lt;br /&gt;
# Данные передаются следующим образом:&lt;br /&gt;
* Когда одна сторона отправляет N байтов, то увеличивает значение поля SEQ на это число.&lt;br /&gt;
* Когда вторая сторона подтверждает получение этого пакета (или цепочки пакетов), она отправляет пакет ACK, в котором значение поля ACK равняется последней полученной последовательности.&lt;br /&gt;
# Закрытие соединения:&lt;br /&gt;
* Сторона, которая хочет закрыть соединение, отправляет пакет FIN;&lt;br /&gt;
* Другая сторона подтверждает FIN (с помощью ACK) и отправляет собственный FIN-пакет;&lt;br /&gt;
* Инициатор прекращения соединения подтверждает получение FIN отправкой собственного ACK.&lt;br /&gt;
&lt;br /&gt;
=TLS handshake=&lt;br /&gt;
# Клиентский компьютер отправляет сообщение ClientHello серверу со своей версией протокола TLS, списком поддерживаемых алгоритмов шифрования и методов компрессии данных.&lt;br /&gt;
# Сервер отвечает клиенту сообщением ServerHello, содержащим версию TLS, выбранный метод шифрования, выбранные методы компрессии и публичный сертификат сервиса, подписанный центром сертификации. Сертификат содержит публичный ключ, который будет использоваться клиентом для шифрования оставшейся части процедуры «рукопожатия», пока не будет согласован симметричный ключ.&lt;br /&gt;
# Клиент подтверждает сертификат сервера с помощью своего списка центров сертификации. Если сертификат подписан центром из списка, то серверу можно доверять, и клиент генерирует строку псевдослучайных байтов и шифрует её с помощью публичного ключа сервера. Эти случайные байты могут быть использованы для определения симметричного ключа.&lt;br /&gt;
# Сервер расшифровывает случайные байты с помощью своего секретного ключа и использует эти байты для генерации своей копии симметричного мастер-ключа.&lt;br /&gt;
# Сервер генерирует собственный хеш, а затем расшифровывает полученный от клиента хеш, чтобы проверить, совпадёт ли он с собственным. Если совпадение обнаружено, сервер отправляет клиенту собственный ответ Finished, также зашифрованный симметричным ключом.&lt;br /&gt;
# После этого TLS-сессия передаёт данные приложения (HTTP), зашифрованные с помощью подтверждённого симметричного ключа.&lt;br /&gt;
&lt;br /&gt;
=HTTP=&lt;br /&gt;
* Клиент отправляет серверу HTTP-запрос:&lt;br /&gt;
GET / HTTP/1.1&lt;br /&gt;
Host: google.com&lt;br /&gt;
Connection: close (закрыть соединение по завершении взаимодействия)&lt;br /&gt;
[другие заголовки]&lt;br /&gt;
[пустая строка]&lt;br /&gt;
&lt;br /&gt;
* Сервер отвечает:&lt;br /&gt;
200 OK&lt;br /&gt;
[заголовки ответа]&lt;br /&gt;
[пустая строка]&lt;br /&gt;
[контент HTML-страницы www.google.com]&lt;br /&gt;
и закрывает соединение (так как клиент отправил заголовок Connection: close)&lt;br /&gt;
&lt;br /&gt;
=Ссылки=&lt;br /&gt;
* [https://drive.google.com/file/d/1_f3Pd5-E-mSsjYm_nZ-Jt16DLAD6Ck-h/view?usp=sharing Презентация]&lt;br /&gt;
* [https://youtu.be/4IBPn7CWB0I Видео]&lt;br /&gt;
* [https://github.com/alex/what-happens-when Еще более подробное описание того, что происходит при обращении по URL]&lt;br /&gt;
* [https://miek.nl/2009/july/31/dns-classes/ О классах записей DNS]&lt;br /&gt;
* [https://scapy.readthedocs.io/en/latest/ Документация Scapy]&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Whois.png&amp;diff=509</id>
		<title>Файл:Whois.png</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Whois.png&amp;diff=509"/>
		<updated>2021-04-20T16:13:26Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;whois&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DNS_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D1%81_%D0%BF%D0%BE%D1%81%D0%BE%D1%89%D1%8C%D1%8E_Scapy.png&amp;diff=507</id>
		<title>Файл:DNS запрос с посощью Scapy.png</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:DNS_%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81_%D1%81_%D0%BF%D0%BE%D1%81%D0%BE%D1%89%D1%8C%D1%8E_Scapy.png&amp;diff=507"/>
		<updated>2021-04-20T08:34:16Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;DNS запрос с посощью Scapy&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Ping_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Scapy.png&amp;diff=506</id>
		<title>Файл:Ping с помощью Scapy.png</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Ping_%D1%81_%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E_Scapy.png&amp;diff=506"/>
		<updated>2021-04-20T08:13:41Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ping с помощью Scapy&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
	<entry>
		<id>https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dig_%2Bshort.png&amp;diff=505</id>
		<title>Файл:Dig +short.png</title>
		<link rel="alternate" type="text/html" href="https://course.secsem.ru/w/index.php?title=%D0%A4%D0%B0%D0%B9%D0%BB:Dig_%2Bshort.png&amp;diff=505"/>
		<updated>2021-04-20T08:04:32Z</updated>

		<summary type="html">&lt;p&gt;Lgeek19: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dig +short&lt;/div&gt;</summary>
		<author><name>Lgeek19</name></author>
	</entry>
</feed>