本题知识点:
漏洞存在原因以及基本思路:
开发者在涉及程序网页时为了方便将HTML语言作为一个字符串写进了一个python语句中而造成,通过对某个参数传参,进行查找调用python内部的命令执行语句,获得控制权。
参考文章:
SSTI_OF_FLASK - Huamang's Blog
类似以下题目把HTML语言写在python语句中作为字符串引用
__class__ 取类
__bases__[0] 拿基类
__base__ 拿基类
__mro__ 返回一个类的调用顺序,__mro__[1]或者__mro__[-1]拿到基类
__subclasses__() 返回子类集合
__init__ 类的初始化方法,所有自带带类都包含init方法,便于利用他当跳板来调用globals
__globals__ function.__globals__,用于获取function所处空间下可使用的module、方法以及所有变量
__builtins__ 是一个包含了大量内置函数的一个模块
解题过程见下图
解题思路:
参考详细过程:
SSTI_OF_FLASK - Huamang's Blog
可能的误区与难点:
1.不太懂python语法规则格式会存在许多错误;例如两个类之间的点如果用['xxx']连接'.'就不需要了。
2.本地尝试跑python脚本与题目构造跑一样可行,只不过在找比如__subclasses__[](117),即<class'os._wrap_close'>要本地用python写一个查找函数获得数字即python中该函数位置。
3.黑名单即过滤绕过了那些字符或关键字不得而知,具体题目具体分析,可能会有的题目存在源码泄露,或者BP爆破出关键字。(目前还没试过,具体做法可以多搜搜其他师傅做法)
4.绕过方式不单一存在多种形式只要该基类中又可执行命令函数或关键字即可。
参考博客:
以 Bypass 为中心谭谈 Flask-jinja2 SSTI 的利用 - 先知社区 (aliyun.com)
SSTI_OF_FLASK - Huamang's Blog
flask之ssti模版注入从零到入门 - 先知社区 (aliyun.com)
萌新见解,如有错误望指正,部分引用未来得及表明出处,望见谅。
标签:__,题目,python,Huamang,学警杯,SSTI,复现,基类 From: https://blog.csdn.net/Z052308/article/details/137195980