SSTI注入

进过几天的CSDN和博客园以及个人博客的查询,我大概讲一下我对SSTI模板注入的理解。

SSTI注入指的是模板注入(应该翻译就是模板注入)

就站在我所了解的知识水平(大概就是大一随便水了一下的c/c++)上简单分析一下

模板大概就相当于c++中的模板类(可以使用模板类来到达多种类,当然还有模板函数),大概就是用模板可以省很多工作量。(虽然这是一个新东西,但我想用一些我了解的东西大概解释一下,以免我就只记下它的一堆概念)

而模板有一个特性(他会执行传给它的参数,实际上你给模板2*3与给它6是一个道理,它会先计算2*3)

怎么看它有没有模板注入


如果来浏览器的网址栏看到明显的一个变量=某个东西(s),而这个东西又被输出到网页上可以试着改一下这个s,看输出变没变。例如

很明显它就把我输的东西给渲染出来了(这就说明存在SSTI)

模板注入在源码上的体现


$output = $twig->render("Hello {{name}}", array("name" => $_GET["name"])

列入上面这句话(这个是不会引起模板注入的)原因是输入是先在后面赋值给name然后在将name带入到前面来。

我想到一个有意思的例子:

将用户的输入比作一个炸弹,那么上面的("name" => $_GET["name"])就是将这个炸弹进行3D打印然后将打印出来的假炸弹传给模板(这样是没问题的)。

在考虑这个:

$output = $twig->render("Hello {$_GET['name']}");

显然这个就是直接将炸弹给模板了,被炸也就很正常了。·

注:这个例子中用户的模板方法是twig(一个开源的项目)

如何进行模板注入


这里我还没屡清楚,推一下我看的几篇博客吧。

https://www.cnblogs.com/bmjoker/p/13508538.html

https://blog.knownsec.com/2015/11/server-side-template-injection-attack-analysis/

最后,这个坑太大了,以我现在的知识储备属实填不过来(以后慢慢填)

网上相关的解读有很多(也都很理论),这是我在读了超过10篇博客后大概的总结。

模板注入这个板块内容很多(而我又是第一次接触注入这种东西)

如有什么错误,也希望各位指出来。

a li ga do~

关于SSTI的坑的更多相关文章

  1. SSTI服务器模板注入(以及关于渲染,solt的学习)&&[BJDCTF2020]The mystery of ip 1

    ssti服务器模板注入 ssti:利用公共 Web 框架的服务器端模板作为攻击媒介的攻击方式,该攻击利用了嵌入模板的用户输入方式的弱点.SSTI 攻击可以用来找出 Web 应用程序的内容结构. slo ...

  2. 从零开始的ssti学习(已填)

    前前言: 本文只是接这个机会来梳理一下ssti的知识点.先说一下,本文目前的重点是Flask的ssti,但是之后会填其他框架的坑.(就不该叫ssti学习,ssti太广了) 涉及知识点: 模板注入 前言 ...

  3. 初探 Python Flask+Jinja2 SSTI

    初探 Python Flask+Jinja2 SSTI 文章首发安全客:https://www.anquanke.com/post/id/226900 SSTI简介 SSTI主要是因为某些语言的框架中 ...

  4. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  5. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  6. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  7. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  8. 踩石行动:ViewPager无限轮播的坑

    2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...

  9. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

随机推荐

  1. 证明:(a,[b,c]) = [(a,b),(a,c)]

    这题是潘承洞.潘承彪所著<初等数论>(第三版)第一章第5节里一个例题,书中采用算术基本定理证明,并指出要直接用第4节的方法来证是较困难的. 现采用第4节的方法(即最大公约数理论里的几个常用 ...

  2. python 逆序按行读取文件

    How to read a file in reverse order? import os def readlines_reverse(filename): with open(filename) ...

  3. Python - 进度条库 tqdm

    前言 在写生成器的时候,网上看到一个进度条库,感觉蛮有意思,记录下 这个库感觉只有在调试的时候会用到,不做深入学习 内置库,不需要安装 示例代码 from tqdm import tqdm for i ...

  4. Selenium系列(22) - 通过selenium控制浏览器滚动条的几种方式

    如果你还想从头学起Selenium,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1680176.html 其次,如果你不懂前端基础知识, ...

  5. linux 常用命令脑图

  6. 微信小程序开发正常,真机预览模式错误

    原因是开发时设置了不检查域名是否合法,去后台设置上就可以了

  7. C# AutoMaper简单使用

    AutoMapper它是一种对象与对象之间的映射器,让AutoMapper有意思的就是在于它提供了一些将类型A映射到类型B这种无聊的实例,只要B遵循AutoMapper已经建立的惯例,那么大多数情况下 ...

  8. Nginx:多项目开发配置跨域代理

    简述Nginx应用场景(前后端) 当我们开发 vue 项目中可以通过 proxyTable 进行跨域,但如果是原生的 html+css+js ,或者其他没有跨域插件的项目中,想要跨域就要引入配置许多的 ...

  9. [ Skill ] Cadence Skill 语言入门

    https://www.cnblogs.com/yeungchie/ 写个大笔记,低速更新中 ... Cadence Skill Cadence 提供二次开发的 SKILL 语言,它是一种基于通用人工 ...

  10. Spring Boot 2.x 之 Logging

    [源起] 最近在看Apollo的源码,发现其all-in-one项目的脚本demo.sh在执行的时候,竟然没有向控制台输出Spring Boot的日志. 我们修改后构建的Fat Jar,在启动时却打印 ...