HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Теги: реверс-инжиниринг, reverse engineering, задачи, реверс, ctf, обратная разработка</p>
1 <p>Теги: реверс-инжиниринг, reverse engineering, задачи, реверс, ctf, обратная разработка</p>
2 <p>Всем привет! Как известно, в CTF существует несколько вариантов проведения соревнований. В нашем случае мы остановимся на реверс-инжиниринге - исследовании программ без исходного кода. И поговорим про задание<strong>Reverse_50. Console version 1.337</strong>.</p>
2 <p>Всем привет! Как известно, в CTF существует несколько вариантов проведения соревнований. В нашем случае мы остановимся на реверс-инжиниринге - исследовании программ без исходного кода. И поговорим про задание<strong>Reverse_50. Console version 1.337</strong>.</p>
3 <h2>Into</h2>
3 <h2>Into</h2>
4 <p><strong>Обратная разработка</strong>- исследование некоторого устройства или программы, а также документации на него с целью понять принцип его работы; например, чтобы обнаружить недокументированные возможности (в том числе "программные закладки"), сделать изменение, или воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового (© Wikipedia).</p>
4 <p><strong>Обратная разработка</strong>- исследование некоторого устройства или программы, а также документации на него с целью понять принцип его работы; например, чтобы обнаружить недокументированные возможности (в том числе "программные закладки"), сделать изменение, или воспроизвести устройство, программу или иной объект с аналогичными функциями, но без копирования как такового (© Wikipedia).</p>
5 <p>Эта группа категорий схожа по своей сути. Различия небольшие:<strong>reverse</strong>- обычно "раскрутка" алгоритмов, использованных в программе для получения флага;<strong>pwn</strong>- взлом программ и устройств теми же методами;<strong>binary</strong>- реверс программ под Linux;<strong>exploit, vuln</strong>- поиск и эксплуатация уязвимостей на удалённых сервисах (иногда имея в наличии исходный код, иногда сам сервис, иногда без него).</p>
5 <p>Эта группа категорий схожа по своей сути. Различия небольшие:<strong>reverse</strong>- обычно "раскрутка" алгоритмов, использованных в программе для получения флага;<strong>pwn</strong>- взлом программ и устройств теми же методами;<strong>binary</strong>- реверс программ под Linux;<strong>exploit, vuln</strong>- поиск и эксплуатация уязвимостей на удалённых сервисах (иногда имея в наличии исходный код, иногда сам сервис, иногда без него).</p>
6 <h2>Reverse_50. Console version 1.337</h2>
6 <h2>Reverse_50. Console version 1.337</h2>
7 <p><em>A.U.R.O.R.A.: Lieutenant, you are standing in the Alpha base in front of the SCI430422 mainframe art console where its sixty-four LED lights are blinking in hypnotic patterns. As you know, this system is renowned for its top-notch security measures. Only the most expert or resourceful hackers are able to break in - and you are definitely one of them.</em></p>
7 <p><em>A.U.R.O.R.A.: Lieutenant, you are standing in the Alpha base in front of the SCI430422 mainframe art console where its sixty-four LED lights are blinking in hypnotic patterns. As you know, this system is renowned for its top-notch security measures. Only the most expert or resourceful hackers are able to break in - and you are definitely one of them.</em></p>
8 <h3>Решение</h3>
8 <h3>Решение</h3>
9 <p>В этом задании нам нужно было попасть в систему консоли. Для начала запускаем файл на исполнение и видим окно с приветствием и предложением ввести пароль:</p>
9 <p>В этом задании нам нужно было попасть в систему консоли. Для начала запускаем файл на исполнение и видим окно с приветствием и предложением ввести пароль:</p>
10 <p>Что же делать? Открываем файл в отладчике OllyDbg и находим строчку "Please enter password:" - в основном окне пролистаем листинг вверх, до адреса 004010F9:</p>
10 <p>Что же делать? Открываем файл в отладчике OllyDbg и находим строчку "Please enter password:" - в основном окне пролистаем листинг вверх, до адреса 004010F9:</p>
11 <p>Как вы можете видеть, проверка введённого пароля осуществляется в функции, расположенной по адресу 00401000. Попробуем поставить на этот адрес брейкпоинт (клавиша F2 в OllyDbg), затем нажмём F9 (продолжить исполнение) и для примера введём какую-нибудь строку в окне программы:</p>
11 <p>Как вы можете видеть, проверка введённого пароля осуществляется в функции, расположенной по адресу 00401000. Попробуем поставить на этот адрес брейкпоинт (клавиша F2 в OllyDbg), затем нажмём F9 (продолжить исполнение) и для примера введём какую-нибудь строку в окне программы:</p>
12 <p>Нажимаем "Enter", и происходит срабатывание брейкпоинта. Далее переходим в OllyDbg и нажимаем клавишу F7, чтобы перейти внутрь функции по адресу 00401000:</p>
12 <p>Нажимаем "Enter", и происходит срабатывание брейкпоинта. Далее переходим в OllyDbg и нажимаем клавишу F7, чтобы перейти внутрь функции по адресу 00401000:</p>
13 <p>Сразу можно заметить, что по адресу 004010CF производится вызов функции strcmp() из стандартной библиотеки C. Эта функция сравнивает две строки и возвращает 0, если эти строки одинаковы. Ставим брейкпоинт на вызов функции (клавиша F2), нажимаем F9 (продолжить исполнение) и смотрим, какая еще строка, кроме введённой нами строки "password123", будет в неё передаваться:</p>
13 <p>Сразу можно заметить, что по адресу 004010CF производится вызов функции strcmp() из стандартной библиотеки C. Эта функция сравнивает две строки и возвращает 0, если эти строки одинаковы. Ставим брейкпоинт на вызов функции (клавиша F2), нажимаем F9 (продолжить исполнение) и смотрим, какая еще строка, кроме введённой нами строки "password123", будет в неё передаваться:</p>
14 <p>В окне стека (и в окне регистров) мы видим, что строка s1 равна "ctfzone{l33t_haxx0r_is_you!!1}" (без кавычек).</p>
14 <p>В окне стека (и в окне регистров) мы видим, что строка s1 равна "ctfzone{l33t_haxx0r_is_you!!1}" (без кавычек).</p>
15 <p><strong>Вот и флаг!</strong></p>
15 <p><strong>Вот и флаг!</strong></p>
16 <p>Ответ:<em>ctfzone{l33t_haxx0r_is_you!!1}</em></p>
16 <p>Ответ:<em>ctfzone{l33t_haxx0r_is_you!!1}</em></p>
17 <p>В следующих заметках мы продолжим рассматривать задания из CTF по реверсу, поэтому следите за новостями!</p>
17 <p>В следующих заметках мы продолжим рассматривать задания из CTF по реверсу, поэтому следите за новостями!</p>
18 <p><em>За подготовку материала<a>автор</a>выражает благодарность CTF-сообществу.</em></p>
18 <p><em>За подготовку материала<a>автор</a>выражает благодарность CTF-сообществу.</em></p>
19  
19