17 de set. de 2013

Python - eval() ou evil()?

1 comentários
    A linguagem python possui várias funções para interagir com o interpretador, uma delas é a eval(), que avalia uma string como uma expressão python:
>>> assert eval("3*3 + len('zeldani')") == 16
>>> marmotas = 7
>>> eval("pow(marmotas,3)")
343

    Podemos executar os mais remotos comandos através do __import__ do módulo __builtins__:
>>> eval("__import__('os').system('clear')", {})
>>> eval("__import__('os').getcwd()", {})
'/home/zeldani'

>>> eval('eval(compile("import os;os.system(\\"ls\\")","q","exec"))')