/allcups

Primary LanguagePython

Исключительно в образовательных целях

Экспериментировать можно тут

Известные уязвимости:

Process kill

  • Набирает полный балл по любой задаче, при этом проходит 0 тестов.
import psutil

for process in psutil.process_iter():
    process.kill()

Или

import psutil

for process in psutil.process_iter():
    if process.name() == 'python3':
        process.kill()

НЕ ПРОВЕРЕНО:

Рекурсивный темплейт

#include<vector>

template<class T>T f(T a) {
    return f(std::vector<T>());
}

int main() {
    f(0);
}

Инклуд самого себя

#include __FILE__

Доступ к файлам

  • Список файлов можно найти здесь. Получен с помощью
print(os.listdir(...))
  • Идея: выгружать любой файл из тестирующей системы
  • Максимальный вывод - 300 символов, приходится разбивать файл на "блоки" по 300 символов
  • Чтобы не делать много посылок вручную, была написана программа, автоматизирующая процесс отправки и парсинга вердиктов (выложу позже)

Ограничения по отправкам

  • Ограничения на одну одновременно тестирующуюся посылку - исключительно на сайте, реальное ограничение - не более 9ти одновременно тестирующихся посылок

Тесты

  • Тесты лежат в /tmp/data/tests/{номер теста} (/tmp/data/tests/001...) Можно загружать небольшие тесты через:
print(open('tmp/data/tests/001', 'r').read())

Тестирующая система

  • С помощью описанной выше технологии был выгружен код тестирующей системы
  • Все файлы лежат в папке sources