На сервере есть программа:
#include #include #include
#define memfrob(buf, len) for (int i = 0; i < len; i++) buf[i] ^= 42
int main() { char buf[512] = { '\xcc' };
setvbuf(stdout, NULL, _IONBF, 0); mprotect(&buf, 512, PROT_READ | PROT_WRITE | PROT_EXEC);
printf("Введите ваш ✨ *muszlokod* ✨: ");
fgets(buf, 511, stdin); memfrob(buf, 511); printf("Выполнение вашего кода...\n");
(*(void(*)())buf)(); return 0; }
Что нужно написать в input, чтобы получить список файлов в текущей директории и потом прочитать содержимое файла "flag.txt".
Проверить можно, подключившись к nc challenges.wsi.edu.pl 9001 через netcat.
Информатика Колледж Темы безопасности программного обеспечения и эксплуатации уязвимостей информатика программа сервер ввод список файлов текущая директория содержимое файла flag.txt netcat mprotect memfrob выполнение кода
Чтобы выполнить вашу задачу, необходимо понять, как работает представленный код. Давайте разберем шаги, которые нужно предпринять для получения списка файлов в текущей директории и чтения содержимого файла "flag.txt".
1. Понимание кода:Для того чтобы получить список файлов и прочитать содержимое "flag.txt", необходимо ввести код на языке C, который будет выполнять эти действия. Вот пример кода, который вы можете использовать:
#include3. Код для ввода:#include #include int main() { system("ls > output.txt"); // Список файлов в текущей директории system("cat flag.txt"); // Чтение содержимого файла flag.txt return 0; }
После компиляции, код должен быть преобразован в строку, которая будет передана в качестве ввода. Чтобы это сделать, можно воспользоваться следующими шагами:
Подключитесь к серверу с помощью команды:
nc challenges.wsi.edu.pl 9001
После подключения, вставьте ваш код в формате строки, который вы получили на предыдущем шаге.
5. Проверка результата:После выполнения кода, программа должна вывести список файлов в текущей директории и содержимое файла "flag.txt". Если все сделано правильно, вы увидите флаг в выводе.
Обратите внимание, что выполнение такого кода может быть небезопасным, и вы должны быть уверены, что делаете это в контролируемой среде, например, на платформе для соревнований по безопасности.