ANTICHAT

ANTICHAT (https://forum.antichat.xyz/index.php)
-   Задания/Квесты/CTF/Конкурсы (https://forum.antichat.xyz/forumdisplay.php?f=112)
-   -   Backdoor CTF - [Write-Ups] (https://forum.antichat.xyz/showthread.php?t=1642784)

Kevgen 18.12.2023 18:22

Всем привет!

Подошёл к концу Backdoor CTF и я хочу поделиться решениями некоторых тасков.
Сейчас разберу пока 2 таска: на реверс и форензику.

1. Reverse: Open Sesame

Нам дается apk файл.
Запускаем, смотрим что есть. Есть поле для ввода имени и ключа(далее пароль).

https://forum.antichat.xyz/attachmen...adf5b0d1da.png

Запускаем APKlab в VScode и смотрим MainActivity.java.

Сразу были найдены переменные valid_user, а также valid_password, который равен
Код:

{52, AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR, 49, 98, 97, 98, 97};
.
Отбрасываем valid_user, работаем только с паролем.

Далее у нас идет XOR строки "U|]rURuoU^PoR_FDMo@X]uBUg" с тем самым паролем и проверки на валидность введенного пароля(нам ни к чему).
Обращаем внимание на то, что в valid_password не все значения числовые. Строка "AppCompatDelegate.FEATURE_SUPPORT_ACTION_BAR" тоже является числом, так как возвращает значение "108".

Пишем солвер:

Python:


Код:

import
re

valid_password
=
[
52
,
108
,
49
,
98
,
97
,
98
,
97
]
TextPassword
=
''
.
join
(
chr
(
num
)
for
num
in
valid_password
)
def
sh4dy
(
str_value
)
:
digits_only
=
re
.
sub
(
r"\D"
,
""
,
str_value
)
return
digits_only
def
sl4y3r
(
str_value
)
:
return
int
(
str_value
)
-
1
def
flag
(
str1
,
str2
)
:
sb
=
[
]
for
i
in
range
(
len
(
str2
)
)
:
sb
.
append
(
chr
(
ord
(
str2
[
i
]
)
^
ord
(
str1
[
i
%
len
(
str1
)
]
)
)
)
return
""
.
join
(
sb
)
print
(
flag
(
str
(
sl4y3r
(
sh4dy
(
TextPassword
)
)
)
,
"U|]rURuoU^PoR_FDMo@X]uBUg"
)
)

Получаем флаг:
Код:

flag{aLiBabA_and_forty_thiEveS}
2. Forensics: Forenscript

Нам даётся какой-то файл a.bin. Смотрим в hex редакторе:

https://forum.antichat.xyz/attachmen...6bc9d0ee12.png

Очень похоже на "магические" байты png картинки, да только в странном порядке.
Чтобы восстановить картинку нам надо сделать реверс каждых 4 байт, например "47 4e 50 89" должны превратиться в "89 50 4e 47"

Пишем программу для декодирования:

Python:


Код:

with
open
(
'C:/users/hidden/Desktop/a.bin'
,
'rb'
)
as
file
:
data
=
file
.
read
(
)
output
=
b''
for
i
in
range
(
0
,
len
(
data
)
,
4
)
:
segment
=
data
[
i
:
i
+
4
]
reversed_segment
=
segment
[
:
:
-
1
]
output
+=
reversed_segment
with
open
(
'C:/users/hidden/Desktop/out.png'
,
'wb'
)
as
file
:
file
.
write
(
output
)

Открываем и видим сие:

https://forum.antichat.xyz/attachmen...f0992fb07d.png

Раз флаг не на экране - значит он в картинке.
Открываем aperisolve, видим что там есть ещё одна картинка:

https://forum.antichat.xyz/attachmen...fba07c198f.png

Скачиваем, распаковываем, переименовываем нужный файл в "flag.png" и получаем флаг:
Код:

flag{scr1pt1ng_r34lly_t0ugh_a4n't_1t??}
https://forum.antichat.xyz/attachmen...b48daf7b80.png

Спасибо за прочтение!

Сергей Попов 18.12.2023 21:04

Цитата:


Kevgen сказал(а):

Backdoor CTF


Это где было?

Kevgen 18.12.2023 21:07

Цитата:


The Antichat сказал(а):

Это где было?


Здравствуйте!
Онлайн, если я правильно понял вопрос.
Нужна ссылка?

Сергей Попов 18.12.2023 21:10

Цитата:


Kevgen сказал(а):

если я правильно понял вопрос


Не правильно Добавьте пожалуйста ссылку на CTF в свой райтап, иначе все будут искать задание на нашем Antichat.games

Kevgen 18.12.2023 21:13

Цитата:


The Antichat сказал(а):

Не правильно Добавьте пожалуйста ссылку на CTF в свой райтап, иначе все будут искать задание на нашем Antichat.games

Обновил, спасибо)


Время: 21:03