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. 2020最精细的Java学习路线图

    在吾爱破解发布的Java学习路线图自我感觉良好,之后看到动力节点Java学院的这份学习路线图感觉专业的东西还得专业的人来做,这份专业的学路线图把我上次的Java学习路线图秒成渣,虽然内容差不多,上份是 ...

  2. html调用swf的语句

    <div style="width: 1000px; height: 202px; margin-left: auto; margin-right: auto"> &l ...

  3. sizeof关键字

    sizeof关键字 sizeof不是函数,所以不需要包含任何头文件,它的功能是计算一个数据类型的大小,单位为字节 sizeof的返回值为size_t size_t类型在32位操作系统下是unsigne ...

  4. Mysql主从复制、半同步复制、并行复制

    MySQL之间数据复制的基础是二进制日志文件(binary log file).一台MySQL数据库一旦启用二进制日志后,其作为master,它的数据库中所有操作都会以"事件"的方 ...

  5. MyBatis学习总结(一)——MyBatis入门学习

    一.MyBatis 简介 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装.MyBatis可 ...

  6. 异步处理方式之信号(一):基础知识和signal函数说明

    文章目录 1. 引言 2. 信号的概念 2.1 信号操作之忽略信号 2.2 信号操作之捕捉信号 2.3 信号操作之执行系统默认操作 2.4 常见的信号 3. 函数signal 3.1 signal函数 ...

  7. QT之静态函数发送信号

    一.简介 由于博主本人是初学者对QT的机制不了解,所以遇到了一个比较大的坑,特此记录一下.我遇到的问题是无法在静态函数中向另外一个类发送信号.解决办法:先将信号发送给同类中的普通函数,然后在从普通函数 ...

  8. Linux从头学12:读完这篇【特权级】文章,你就比别人更“精通”操作系统!

    作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++.嵌入式.Linux. 关注下方公众号,回复[书籍],获取 Linux.嵌入式领域经典书籍:回复[PDF],获取所有原创文章( PDF 格式). ...

  9. Windows难民安装docker的注意事项

    Windows下如何安装docker,这个没啥可说的,一直下一步就ok Windows  docker 下载地址: https://download.docker.com/win/stable/Doc ...

  10. Django学习day09随堂笔记

    每日测验 """ 今日考题: 1.choices参数的应用场景有哪些,如何获取该字段的值 2.django是什么模型的框架,简述MTV与MVC模型 3.多对多表关系有几种 ...