Приветствую любителей играть в CTF, особенно тех кто любит играть на Codeby.games.
Сегодня рассмотрим таск под названием - Странный Сервер из категории Веб.
Первое что мы видим переходя по ip:
Здесь написано что можно что то протестировать, /same /hello_world и тд. При подстановки мы не получаем ничего интересного.
В начале я думал что то связанное с фаззингом. Потратил время, но ничего не нашел.
Зная что админы любят SSTI , и мы любим это, по этому просто подставляем базовую нагрузку в url:
Успешно) и мы сразу понимаем что это Jinja2. Я часто обращаюсь к PayloadsAllTheThings, там подробно описано
как определять шаблонизатор, так же там есть полезные нагрузки и не только для SSTI.
Попробуем что то вывести :
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
Этот код в языке шаблонов предполагает выполнение команды id.
В результате его выполнения будет возвращена информация о текущем пользователе:
Попробуем теперь поискать что нибудь:
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('ls').read() }}
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('cat flag.txt').read() }}
Вот и наш заветный флаг. Задание оказалось максимально простым. Спасибо за внимание и до новых встреч!
Сегодня рассмотрим таск под названием - Странный Сервер из категории Веб.
Первое что мы видим переходя по ip:
Здесь написано что можно что то протестировать, /same /hello_world и тд. При подстановки мы не получаем ничего интересного.
В начале я думал что то связанное с фаззингом. Потратил время, но ничего не нашел.
Зная что админы любят SSTI , и мы любим это, по этому просто подставляем базовую нагрузку в url:
Успешно) и мы сразу понимаем что это Jinja2. Я часто обращаюсь к PayloadsAllTheThings, там подробно описано
как определять шаблонизатор, так же там есть полезные нагрузки и не только для SSTI.
Попробуем что то вывести :
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('id').read() }}
Этот код в языке шаблонов предполагает выполнение команды id.
В результате его выполнения будет возвращена информация о текущем пользователе:
Попробуем теперь поискать что нибудь:
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('ls').read() }}
{{ self.__init__.__globals__.__builtins__.__import__('os').popen('cat flag.txt').read() }}
Вот и наш заветный флаг. Задание оказалось максимально простым. Спасибо за внимание и до новых встреч!