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

  • Автор темы Автор темы artesk
  • Дата начала Дата начала

artesk

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


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

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

1700486503698.png


1700486548210.png
 
Есть гайд для самых маленьких как это будет выглядеть на c#/python? И откуда взялся paylaod?
 
  • Нравится
Реакции: Luxkerr
Есть гайд для самых маленьких как это будет выглядеть на 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
Разбор для самых маленьких.

Это типичный код 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
Всем привет!


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

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

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

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


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

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

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

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


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

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

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

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

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