BugCTF(Simple_SSTI_1)

1.解题过程

题目意思:你需要传为flag的参数

先查看源代码,得到提示

在flask中,设置了一个secret_key变量

使用模板变量进行渗透 :{{}}是模板变量的用法。在模板中,想要展示视图向模板渲染的变量,需要使用{{变量}}进行接收。

尝试输入flag={{6+6}},得到部分信息

最后url+?flag={{config}}得到flag

在模板中,config通常指的是配置文件。这些文件包含了程序运行所需的设置和参数,使得程序可以根据配置文件的内容进行适应性调整。

这是标准做法:

?flag={{''.__class__.__base__.__subclasses__()[127].__init__.__globals__['popen']('echo $FLAG').read()}}

  1. ‘’.class:这部分获取了一个空字符串的类。
  2. .base:这部分获取了该类的基类,对于空字符串来说,它的基类是object。
  3. .subclasses():这部分返回了object类的所有直接子类。
  4. [127]:这部分试图访问子类列表的第128个元素(因为Python的索引是从0开始的),但这个索引超出了列表的长度,所以会抛出一个IndexError。
  5. .init:这部分试图访问某个类的初始化方法,但前面提到的子类列表访问是错误的,所以这一步也是错误的。
  6. .globals[‘popen’](‘echo FLAG′).read():这部分首先尝试访问当前对象的全局符号表(字典),然后试图在其中查找popen键,并执行其对应的值(一个命令)。这个命令是echoFLAG,它会输出环境变量FLAG的值。最后,.read()方法读取命令的输出。

2.知识点补充(SST模块注入)

1.定义:

SSTI即服务器端模板注入(Server-Side Template Injection),是一种注入漏洞。 服务端接收了用户的恶意输入以后,未经任何处理就将其作为Web应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell等问题。(简单来说,服务器与数据库未相联系,找到漏洞后可以控制,破坏web模版)

2.攻击类型

  1. 代码执行:攻击者可以通过SSTI注入在服务器端执行任意代码,包括命令执行、远程文件包含等攻击。这可能导致服务器被完全控制,进一步导致数据泄漏、服务器崩溃或恶意操作。
  2. 敏感信息泄露:攻击者可以通过SSTI注入获取服务器上的敏感信息,如数据库连接字符串、API密钥等。这可能导致用户数据泄露、系统被入侵或身份盗窃等问题。
  3. 垂直和横向越权:通过SSTI注入,攻击者可能访问到非授权的数据或功能,实施垂直或横向越权行为。这可能导致用户权限被提升、重要数据被访问或其他合法用户遭受影响。
  4. DoS攻击:攻击者可以通过SSTI注入导致服务器负载过高,从而拒绝服务,使网站或应用程序无法正常运行。(来自于百度)

3.Flask模块

详细看:第 1 章:准备工作 - Flask 入门教程

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值