• Главная
  • Контакты
Подписаться:
  • Twitter
  • Facebook
  • RSS
  • VK
  • PushAll
logo

logo

  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • За год
    • Положительные
    • Отрицательные
  • Сортировка
    • По дате (возр)
    • По дате (убыв)
    • По рейтингу (возр)
    • По рейтингу (убыв)
    • По комментам (возр)
    • По комментам (убыв)
    • По просмотрам (возр)
    • По просмотрам (убыв)
Главная
  • Все
    • Положительные
    • Отрицательные
  • За сегодня
    • Положительные
    • Отрицательные
  • За вчера
    • Положительные
    • Отрицательные
  • За 3 дня
    • Положительные
    • Отрицательные
  • За неделю
    • Положительные
    • Отрицательные
  • За месяц
    • Положительные
    • Отрицательные
  • Главная
  • YUBITSEC CTF: Изучайте реверс или +925 очков рейтинга за несколько минут

YUBITSEC CTF: Изучайте реверс или +925 очков рейтинга за несколько минут +12

24.04.2017 21:49
GH0st3rs 3 3400 Источник
Реверс-инжиниринг*, Информационная безопасность*, CTF*

Всем доброго времени суток. Только что подошел к концу очередной CTF от YubitSec, не смотря на сложности, которые возникли в самом начале из-за обильного DDoS'а всех сайтов с заданиями, битва была довольно жесткой. Задания всё ещё доступны по ссылке.

Gifted 50


Первое и самое простое задание. Описания нет, но есть файл, скачиваем его и приступаем к анализу, и практически сразу забираем флаг:

gh0st3rs@leacher-pc:Gifted$ file gifted
gifted: ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=90d4894c52975348b52134af2f3b33b9da7f0112, not stripped
gh0st3rs@leacher-pc:Gifted$ strings gifted | grep YUBIT
YUBITSEC{MEH_IT_IS_SOMETHING}

The Twin Towers 125


Описания по прежнему нет, но на этот раз вместо бинарника, нам предлагают java класс.
Воспользовавшись jd-gui извлекаем исходный код:

Wtf.class
import java.io.PrintStream;

public class Wtf
{
  public static void main(String[] paramArrayOfString)
  {
    System.out.println("Tonight, as we mark the conclusion of our celebration of Black History Month, we are remindedof our Nation's path toward civil rights and the work that still remains. Recent threats targeting Jewish Community Centers and vandalism of Jewish cemeteries, as well as last week's shooting in Kansas City, remind us that while we may be a Nation divided on policies, we are a country that stands united in condemning hate and evil in all its forms.");
    
    String str = "0YUBITSEC{BUSH_DID_9_11}0";
    if (str == "BUSH DID 9.11") {
      flag();
    }
  }
  
  public static void flag()
  {
    String str1 = null;
    int i = 3;
    int j = 3;
    String str2 = null;
    j = 0 + j;
    if (j % 2 == 0)
    {
      String str3 = str2 + "error";
      String str4 = "Flag is not here actually...";
      String str5 = "59554249545345437B5730575F4D5543485F50524F4752414D4D494E475F4A4156417D";
    }
    else
    {
      int k = 59;
      int m = 554;
      int n = 249;
      int i1 = 545;
      int i2 = 345;
      int i3 = 437;
      
      String str6 = "B77";
      int i4 = 686;
      String str7 = "F5F757";
      
      str1 = Integer.toString(k) + Integer.toString(m) + Integer.toString(n) + Integer.toString(i1) + Integer.toString(i2) + Integer.toString(i3) + str6 + Integer.toString(i4) + str7 + "365735F6A6176615F696E5F323031377D";
    }
    System.out.println(str1);
  }
}


Судя по коду, нас интересует блок, который расположен в ветке else, скопируем это в Python внеся небольшие правки, запустим его:

def flag():
    k = 59
    m = 554
    n = 249
    i1 = 545
    i2 = 345
    i3 = 437
    str6 = "B77"
    i4 = 686
    str7 = "F5F757"
    str1 = str(k) + str(m) + str(n) + str(i1) + str(i2) + str(i3) + str6 + str(i4) + str7 + "365735F6A6176615F696E5F323031377D"
    print(str1)
>>> flag()
59554249545345437B77686F5F757365735F6A6176615F696E5F323031377D

Декодируем полученную HEX строку и забираем новый флаг:

YUBITSEC{who_uses_java_in_2017}

Reverse101 225


В описании содержится всего 1 фраза:
Jump over it.

И прилагается файл. Откроем его в IDA:

Это просто...
.text:00000000004007AF                 mov     dword ptr [rax], 'Y'
.text:00000000004007B5                 add     rax, 4
.text:00000000004007B9                 sub     rdx, 1
.text:00000000004007BD                 mov     dword ptr [rax], 'U'
.text:00000000004007C3                 add     rax, 4
.text:00000000004007C7                 sub     rdx, 1
.text:00000000004007CB                 mov     dword ptr [rax], 'B'
.text:00000000004007D1                 add     rax, 4
.text:00000000004007D5                 sub     rdx, 1
.text:00000000004007D9                 mov     dword ptr [rax], 'I'
.text:00000000004007DF                 add     rax, 4
.text:00000000004007E3                 sub     rdx, 1
.text:00000000004007E7                 mov     dword ptr [rax], 'T'
.text:00000000004007ED                 add     rax, 4
.text:00000000004007F1                 sub     rdx, 1
.text:00000000004007F5                 mov     dword ptr [rax], 'S'
.text:00000000004007FB                 add     rax, 4
.text:00000000004007FF                 sub     rdx, 1
.text:0000000000400803                 mov     dword ptr [rax], 'E'
.text:0000000000400809                 add     rax, 4
.text:000000000040080D                 sub     rdx, 1
.text:0000000000400811                 mov     dword ptr [rax], 'C'
.text:0000000000400817                 add     rax, 4
.text:000000000040081B                 sub     rdx, 1
.text:000000000040081F                 mov     dword ptr [rax], '{'
.text:0000000000400825                 add     rax, 4
.text:0000000000400829                 sub     rdx, 1
.text:000000000040082D                 mov     dword ptr [rax], 'U'
.text:0000000000400833                 add     rax, 4
.text:0000000000400837                 sub     rdx, 1
.text:000000000040083B                 mov     dword ptr [rax], 'S'
.text:0000000000400841                 add     rax, 4
.text:0000000000400845                 sub     rdx, 1
.text:0000000000400849                 mov     dword ptr [rax], 'E'
.text:000000000040084F                 add     rax, 4
.text:0000000000400853                 sub     rdx, 1
.text:0000000000400857                 mov     dword ptr [rax], '_'
.text:000000000040085D                 add     rax, 4
.text:0000000000400861                 sub     rdx, 1
.text:0000000000400865                 mov     dword ptr [rax], 'G'
.text:000000000040086B                 add     rax, 4
.text:000000000040086F                 sub     rdx, 1
.text:0000000000400873                 mov     dword ptr [rax], 'D'
.text:0000000000400879                 add     rax, 4
.text:000000000040087D                 sub     rdx, 1
.text:0000000000400881                 mov     dword ptr [rax], 'B'
.text:0000000000400887                 add     rax, 4
.text:000000000040088B                 sub     rdx, 1
.text:000000000040088F                 mov     dword ptr [rax], '_'
.text:0000000000400895                 add     rax, 4
.text:0000000000400899                 sub     rdx, 1
.text:000000000040089D                 mov     dword ptr [rax], 'P'
.text:00000000004008A3                 add     rax, 4
.text:00000000004008A7                 sub     rdx, 1
.text:00000000004008AB                 mov     dword ptr [rax], 'E'
.text:00000000004008B1                 add     rax, 4
.text:00000000004008B5                 sub     rdx, 1
.text:00000000004008B9                 mov     dword ptr [rax], 'D'
.text:00000000004008BF                 add     rax, 4
.text:00000000004008C3                 sub     rdx, 1
.text:00000000004008C7                 mov     dword ptr [rax], 'A'
.text:00000000004008CD                 add     rax, 4
.text:00000000004008D1                 sub     rdx, 1
.text:00000000004008D5                 mov     dword ptr [rax], '_'
.text:00000000004008DB                 add     rax, 4
.text:00000000004008DF                 sub     rdx, 1
.text:00000000004008E3                 mov     dword ptr [rax], 'S'
.text:00000000004008E9                 add     rax, 4
.text:00000000004008ED                 sub     rdx, 1
.text:00000000004008F1                 mov     dword ptr [rax], 'R'
.text:00000000004008F7                 add     rax, 4
.text:00000000004008FB                 sub     rdx, 1
.text:00000000004008FF                 mov     dword ptr [rax], 'S'
.text:0000000000400905                 add     rax, 4
.text:0000000000400909                 sub     rdx, 1
.text:000000000040090D                 mov     dword ptr [rax], 'L'
.text:0000000000400913                 add     rax, 4
.text:0000000000400917                 sub     rdx, 1
.text:000000000040091B                 mov     dword ptr [rax], 'Y'
.text:0000000000400921                 add     rax, 4
.text:0000000000400925                 lea     rcx, [rdx-1]
.text:0000000000400929                 mov     dword ptr [rax], '}'
.text:000000000040092F                 lea     rdx, [rax+4]
.text:0000000000400933                 lea     rax, [rcx-1]


Можно переписать прям отсюда или как предложено в описании, поставить бряк в конце и сдампить память. Собственно флаг:

YUBITSEC{USE_GDB_PEDA_SRSLY}

Password 250


Из небольшого описания следует, что флаг это число:
The flag is the password. (Integer)

Flag format: YUBITSEC{}

Скачиваем файл и запускаем IDA и полистав немного функцию main находим вызов функции check_password:



Пароль найден, он же и часть флага:
YUBITSEC{1453}

Reverse The Snake! 275


Описания снова нет, но есть *.pyc файл. После декомпиляции получаем следующее:

gh0st3rs@leacher-pc:ReverseTheSnake!$ uncompyle6 WTF.pyc 
# uncompyle6 version 2.9.10
# Python bytecode 2.7 (62211)
# Decompiled from: Python 3.4.3 (default, Nov 17 2016, 01:08:31) 
# [GCC 4.8.4]
# Embedded file name: ./decompile.py
# Compiled at: 2017-04-20 04:11:32


def flag():
    a = 5955
    b = 4249
    c = 5453
    d = 4543
    f = 7
    e = 'b4641524557454C4C5F42414C4C41447D'
    flg = str(a) + str(b) + str(c) + str(d) + str(f) + e


print 'You must decompile me.'
# okay decompiling WTF.pyc

После запуска функции в интерпретаторе, получаем очередной флаг, точнее его HEX представление:
59554249545345437b4641524557454c4c5f42414c4c41447d -> YUBITSEC{FAREWELL_BALLAD}

Таким образом, суммарно, не прилагая значительных усилий, получается +925 к общему рейтингу команды. Изучайте реверс — это интересно!
Поделиться с друзьями
-->

Комментарии (3)


  1. fishca
    25.04.2017 11:35
    #10189950

    Кто не в теме что такое флаг, в комментах делать нечего?


    1. Xendler
      25.04.2017 18:35
      #10190838

      флаг — ответ на задание. capture the flag же


    1. tfs_cradle
      25.04.2017 18:35
      #10190840

      на сколько я знаю суть «велопробега» заключается в том, чтобы собрать наибольшее количество «флагов» путём реверса программ

МЕТКИ

  • Хабы
  • Теги

Реверс-инжиниринг

Информационная безопасность

CTF

python

java

elf

ctf

information security

yubitsec

reverse engineering

СЕРВИСЫ
  • logo

    CloudLogs.ru - Облачное логирование

    • Храните логи вашего сервиса или приложения в облаке. Удобно просматривайте и анализируйте их.
Все публикации автора
  • PHDays HackQuest 2017: RanSomWare — небольшой криптор на GO +20

    • 13.05.2017 09:32

    YUBITSEC CTF: Изучайте реверс или +925 очков рейтинга за несколько минут +12

    • 24.04.2017 21:49

    VulnHub: Новая серия — hackfest2016 Quaoar +13

    • 16.04.2017 18:40

    NeoQuest 2017: Реверс андроид приложения в задании «Почини вождя!» +17

    • 10.03.2017 15:44

    Exploit Exercises: Введение в эксплуатацию бинарных уязвимостей на примере Protostar +20

    • 07.03.2017 14:00

    Как накрутить 40к просмотров на Хабрахабр. Баг или фича? +95

    • 26.02.2017 12:50

    Не доверяйте SUDO, она может вас подвести +89

    • 19.02.2017 19:16

    VulnHub: Выкидываем неугодных из IRC в Wallaby's Nightmare +12

    • 09.02.2017 22:14

    Hack.me: Ещё одна площадка для оттачивания навыков в области ИБ +31

    • 29.01.2017 20:19

    VulnHub: Погружаемся в хакинг в стиле сериала Mr. Robot +14

    • 22.01.2017 22:07

Подписка


ЛУЧШЕЕ

  • Сегодня
  • Вчера
  • Позавчера
04:30

Как универсальный разъем стал кошмаром: почему одинаковые кабели USB-C отличаются по скорости в 80 раз +27

07:22

Инцидент с ключами eMudhra: удивительная история длиной в полтора года и обновление миллионов устройств за пару дней +20

08:00

Я подсвечивал нейроны крохотного ИИ, чтобы понять, когда тот врет +19

07:15

Интеграция 5G: как обеспечить непрерывность связи между поколениями сетей +14

06:59

Биллинг 1 миллиарда событий для 700К клиентов на 1С 8.5 в inFrame режиме для 50К пользователей +13

08:20

Как DeWalt, Milwaukee и Hilti стали похожи на LEGO. И почему их «LEGO» до сих пор не совместимы между собой +9

07:16

Как выбрать электронный финансовый архив для бухгалтерии: критерии, которые действительно важны +9

07:01

PostgreSQL на 1 ТБ: сколько стоит облако и выделенный сервер +9

04:09

Компьютерное зрение на микроконтроллере за $2: SIMD на ESP32-S3 ускорил FAST в 2,2 раза +9

03:49

Проект «Фобос» последня экспедиция Советского Союза к Марсу +9

08:05

Нагрузочное тестирование NDR: как проверить реальную производительность +7

07:29

Почему softmax теряет градиенты — и как школьная алгебра 7-го класса помогает их сохранить +7

07:00

Российская платформа FCU-CM4 c модулем  ELTAY RM66 из Новосибирска с NapiLinux и российским софтом NapiConfig +6

08:12

Почему ехать на велосипеде легче, чем бежать? +5

04:31

LLM после работы: делаю дочке интерактивную книгу с 16 концовками на ESP32-P4 +5

08:05

Как я подключил Hermes Agent к серверам, Obsidian, почте и разделил на Telegram-ботов +4

08:00

Создаем дашборд загрузки отдела в Битрикс24 +4

08:00

Спрайтшит на 0 байт: процедурный пиксель-арт +4

06:06

Контейнер вышел за лимит памяти и не умер. Лучше бы умер +3

09:01

Я вернулся на Android, и мне не понравилось +2

09:20

125 токенов в секунду на RTX 4070 Ti SUPER: как я заставил локальную LLM работать полноценным кодинг-агентом +72

09:02

Как я 2,5 года никому не нужный софт вайбкодил +69

15:36

Как я писал свой TCP на чистом Си: надежный протокол доставки данных поверх UDP +37

07:00

Я пришёл автоматизировать маркетплейсы из кровавого энтерпрайза, и вот что меня сильно удивило +36

13:01

Где CSS подложил вам ловушки +27

07:01

Как жалобы заказчика станут источником ваших новых доходов +26

08:00

5 необычных мини-ПК осени 2026 года: мощная графика, ARM-процессоры и 192 ГБ ОЗУ +25

07:05

Про ещё один потенциально интересный вариант реализации ночного видения +23

19:57

Инженеры хотят расти, но не обязательно руководить +18

13:36

Код считает, модель описывает: как мы встроили LLM в отчетность и не дали ей трогать цифры +18

08:44

Новые плейбуки, старые порядки: почему буксует внедрение Infrastructure as Code +16

04:08

Какая самая старая программа с GUI запускается на Windows 11 без эмуляции +15

09:48

Как починить RAG +14

07:06

SEO умер? Нет, изменился до неузнаваемости +14

01:36

Делаем энергоэффективную систему визуального контроля морской акватории +14

07:33

Как дерзкий рейд за 4 000 километров спас заложников в Энтеббе +13

06:00

Вино вернуло 502 Bad Gateway: как писать баг-репорт на бутылку +12

11:13

Октябрьский «В тренде VM»: уязвимости Windows и Check Point +11

06:41

Робот с LLM, который меня подстрелил. Часть 3 +11

08:11

«Не нашли никаких причин для беспокойства»: как Lenovo продавала ноутбуки, которые сами ломали HTTPS +10

06:01

NoDPI v2.3: они научились собирать фрагментированный ClientHello, а мы научились это исправлять +291

15:53

Черный октябрь «Яндекса»: анатомия архитектурной и управленческой катастрофы, которую списали на форс‑мажор +150

07:05

Воспоминания об АОНе. Как работал определитель номера и почему он вызывал столько дискуссий +90

08:00

ИИ ошибается и это хорошо +61

09:01

Nikon D200, магия CCD +58

07:01

Лазерные пушки и автоматические турели +46

13:01

Кто виноват в том, что товары становятся хуже +45

15:07

Интро для ZX Spectrum в 2026 году +36

08:15

Кто стучится в открытые порты: я написал ловушку для ботов и разобрал их команды +35

14:44

Почему Илон Маск может, а наши ОПСОСы — нет? +33

11:45

Загадка римских додекаэдров: мы нашли 134 экземпляра, но до сих пор не знаем, для чего они +27

21:15

Просто сделать игру недостаточно +25

09:41

Что у советских граждан было вместо интернета? +23

08:21

Четыре линии RS-485 на одном IP. Сделали шлюз Modbus TCP на NAPI‑C и FT4232H и что увидели под нагрузкой +23

12:57

Микроконтроллер Baikal-U: «Привет мир» и отладка в VS Code +19

01:11

Конец прекрасной эпохи — ИИ в руках хакеров +17

09:49

C# теперь в GigaIDE: бесплатно и в одном окне +15

08:12

Как возникла жизнь? +15

15:35

Купили родителям ТВ‑приставку за копейки, а в прошивке нашли предустановленный вредонос: разбор H96 Max V11 +14

18:20

yt-dlp для мамы: как я упаковал консольную утилиту в программу для Windows и на какие грабли наступил +11

ОБСУЖДАЕМОЕ

  • Черный октябрь «Яндекса»: анатомия архитектурной и управленческой катастрофы, которую списали на форс‑мажор +150

    • 201   27000

    125 токенов в секунду на RTX 4070 Ti SUPER: как я заставил локальную LLM работать полноценным кодинг-агентом +66

    • 110   36000

    Почему Илон Маск может, а наши ОПСОСы — нет? +33

    • 109   11000

    Лазерные пушки и автоматические турели +46

    • 96   13000

    Что у советских граждан было вместо интернета? +23

    • 87   10000

    Кто виноват в том, что товары становятся хуже +45

    • 80   11000

    NoDPI v2.3: они научились собирать фрагментированный ClientHello, а мы научились это исправлять +291

    • 64   109000

    Ипотека или аренда в Петербурге: я посчитал на Python и вот что вышло +3

    • 40   13000

    Как универсальный разъем стал кошмаром: почему одинаковые кабели USB-C отличаются по скорости в 80 раз +27

    • 32   7500

    Загадка римских додекаэдров: мы нашли 134 экземпляра, но до сих пор не знаем, для чего они +27

    • 32   9900

    Nikon D200, магия CCD +58

    • 29   12000

    Четыре линии RS-485 на одном IP. Сделали шлюз Modbus TCP на NAPI‑C и FT4232H и что увидели под нагрузкой +23

    • 29   9000

    ИИ ошибается и это хорошо +61

    • 24   13000

    Я пришёл автоматизировать маркетплейсы из кровавого энтерпрайза, и вот что меня сильно удивило +36

    • 22   30000

    Какая самая старая программа с GUI запускается на Windows 11 без эмуляции +15

    • 21   11000
  • Главная
  • Контакты
© 2026. Все публикации принадлежат авторам.