SSTI的payload构造思路

内置的方法和属性

有些对象类型内置了一些可读属性,它们不会被dir()列举出来。

属性/方法 描述
instance._class_ 类实例所属的类
class._bases_ 类对象(类也是对象)的基类元组
definition._name_ 类、函数、方法、描述符或生成器实例的名称。
class._mro_ 此属性是在方法解析期间查找基类时考虑的类元组。
class._subclasses_() 每个类都保留一个对其直接子类的弱引用列表。此方法返回所有仍然存活的引用的列表。该列表按定义顺序排列。
module._dict_ 包含模块的符号表的字典,包括标识符名称和它的引用
_builtins_ 一般被模块作为全局变量提供,它的值或者是builtins模块的引用,或者是则这个模块的__dict__属性。如果是builtins模块,该模块提供Python的所有“内置”标识符的直接访问,例如open函数builtins.open()。这个变量在定义与内置函数同名的模块有用处,可以通过它访问内置的同名函数。另外,还可以通过它修改某些标识符的作用。

判断一个模块是否有_builtins_:__builtins__变量是对builtins模块的引用,在sys模块导入了builtins模块的,sys模块是由Python/sysmodule.c编译的,也就是说当一个模块直接或间接(导入的模块里面)导入了sys模块。sys模块是由c程序编译的,但它没有__builtins__变量。

__builtins__的值是当前模块引用的builtins模块:

>>> __builtins__
<module 'builtins' (built-in)>

module.__builtins__的值是指定模块的所有标识符的字典,与__dict__相比,除了变量,还多出了其它标识符,例如:

>>> os.__builtins__['TimeoutError']
<class 'TimeoutError'>
属性/方法 描述
_import_() 内置函数,它在importlib包下的_bootstrap模块下定义的__import__()方法的实现,在程序运行开始时,这个包就被导入,所以这个方法也被导入当成内置函数。
method._globals_ 在指定的方法处的全局命名空间(等同于dir(), globals())。method不能是内置的方法名,而是自己定义或者重写的,重写的__init__也算
object._new_(cls[…]) 对象的
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值