📸 Разработчик запустил свой код на сервере, имея лишь возможность изменения содержимого комментария в Python-скрипте
Участник соревнования UIUCTF 2025 обошёл ограничения задачи, где можно было изменять только содержимое комментария в Python-скрипте и подробно рассказал об этом. Вместо поиска уязвимостей в парсере, он использовал особенность интерпретатора — выполнение ZIP-архивов как Python-кода.
Секрет в структуре ZIP-файлов: Python ищет метаданные в конце архива, что позволило вставить архив в комментарий, сохранив валидность исходного скрипта. При запуске такого скрипта выполнялся код из main.py внутри архива.
🔗 Ссылка - *клик*
@pythonl
Участник соревнования UIUCTF 2025 обошёл ограничения задачи, где можно было изменять только содержимое комментария в Python-скрипте и подробно рассказал об этом. Вместо поиска уязвимостей в парсере, он использовал особенность интерпретатора — выполнение ZIP-архивов как Python-кода.
Секрет в структуре ZIP-файлов: Python ищет метаданные в конце архива, что позволило вставить архив в комментарий, сохранив валидность исходного скрипта. При запуске такого скрипта выполнялся код из main.py внутри архива.
🔗 Ссылка - *клик*
@pythonl
❤17👍9🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
🚀 УСКОРЕНИЕ КОДА ЗА СЧЁТ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ
💡 Используй локальные переменные внутри циклов — это может ускорить выполнение на 20–30%, особенно в критичных по времени участках.
Почему это работает?
В Python доступ к локальной переменной быстрее, чем к глобальной или объектной, потому что локальные хранятся в массиве, а не в словаре.
Пример:
# Прирост в скорости особенно заметен при больших объёмах данных```
💡 Используй локальные переменные внутри циклов — это может ускорить выполнение на 20–30%, особенно в критичных по времени участках.
Почему это работает?
В Python доступ к локальной переменной быстрее, чем к глобальной или объектной, потому что локальные хранятся в массиве, а не в словаре.
Пример:
# Медленно: обращение к свойствам объекта в цикле
class Processor:
def __init__(self, data):
self.data = data
def compute(self):
total = 0
for item in self.data:
total += item * item
return total
# Быстрее: кэшируем ссылку на data как локальную переменную
class Processor:
def __init__(self, data):
self.data = data
def compute(self):
data = self.data # локальная переменная
total = 0
for item in data:
total += item * item
return total
# Прирост в скорости особенно заметен при больших объёмах данных```
👍16❤6🔥5