HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > БЕЗОПАСНОСТЬ И УЯЗВИМОСТИ > Этичный хакинг или пентестинг > Задания/Квесты/CTF/Конкурсы
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 12.05.2023, 20:55
yetiraki
Новичок
Регистрация: 07.02.2023
Сообщений: 0
С нами: 1719376

Репутация: 0
По умолчанию

Всем привет.
Немного "отдохнули" на ZipLock, идем дальше.

Скачали файл, разархивировали, смотрим file task4.exe
Видим в результате, что это data, т.е. файл то действительно сломан.

Смотрим hexeditor task4.exe



Видим, что написано, что это PE, но он не запускается, не просматривается ghidra и ida, даже file ничего не показывает. Надо проверить магические байты. Погуглим какие должны быть для PE и DOS[S].[/S]
Вот тут видим много их всяких разных



Видим, что в файле и в таблице магических байтов есть как общее, так и разное, то прямо в hexeditor меняем и сохраняем.

Ура, можем видеть в ghidra. Видим main, видим какие-то нечитаемые данные и функцию check2, в который передается элемент из данных.



Проваливаемся в check2 и видим check, в который передается переданное, но еще и xor-ится.



Проваливаемся в check и видим, что там происходит побитовый сдвиг и xor.



Дебажить в линуксе я так и не научился, потому я возвращаюсь к питону.

Во время реверса надо знать, что все команды которые в коде делаются надо делать в обратную сторону, благо xor работает в обе стороны, но вот сдвиги, сложения, вычитания и деления и прочее уже так не работают. Т.е. надо выполнять команды в обратной последовательности и с обратными знаками, т.е. если был +, то делать надо - и т.д..

Python:


Код:
data
=
[
0x4d18
,
0x4d28
,
0x4d04
,
0x4d00
,
0x4d1c
,
0x4d70
,
0x4df8
,
0x4cd0
,
0x4d2c
,
0x4d4c
,
0x4d10
,
0x4d24
,
0x4cd0
,
0x4d04
,
0x4d68
,
0x4d34
,
0x4cd8
,
0x4d10
,
0x4d04
,
0x4cd8
,
0x4d5c
,
0x4de0
]
result
=
''
for
i
in
data
:
num
=
i
    num
=
num
^
200
num
=
num
>>
2
num
=
num
^
0x1337
result
+=
chr
(
num
)
print
(
result
)
Получили флаг
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.