【问题标题】:Very Lost: Flack and NYU Osiris Challenges非常迷失:弗莱克和纽约大学奥西里斯的挑战
【发布时间】:2020-10-16 10:27:17
【问题描述】:

我正在https://recruit.osiris.cyber.nyu.edu/challenges 接受一些 CTF 挑战。

我有一个模板编程的任务是“从服务器读取 /flag.txt。http://recruit.osiris.cyber.nyu.edu:2000"

我不是在寻求解决方案,但我想更好地了解下面发生的事情:

  • 这段代码在做什么?
  • 我是否应该担心耗尽调试模式和/或使用 host="0.0.0.0"?
  • 有哪些资源可以帮助我理解这一点?我尝试阅读 Flask 文档和 tutorialspoint 页面,但我不清楚这不只是设置本地服务器进行测试,而不是访问远程服务器...
  • 如果我 ctrl+C 是否需要担心在我未处于调试模式时让服务器仍在开放端口上运行?
#!/usr/bin/env python3

from flask import Flask, request, abort, render_template_string
import os.path

app = Flask(__name__)

@app.route('/', methods=['GET'])
def index():
    name = request.args.get('name')
    if name is not None:
        return render_template_string(open('templates/hello.html').read().format(name=name))

    return render_template_string(open('templates/index.html').read())

if __name__ == "__main__":
    app.run(host="0.0.0.0")

【问题讨论】:

    标签: python flask ctf


    【解决方案1】:

    我想我可以回答大部分问题。

    1. 您可能已经知道,Flask 是一个相当基本的 Web 框架。从外观上看,您所拥有的是在 CTF 站点上运行的代码的副本。它只显示两页;一个包含初始 Web 表单 (templates/index.html),另一个在提供名称时使用查询字符串变量向用户致意 (templates/hello.html)。

    2. 您实际上不必自己运行此代码。 0.0.0.0 主机地址是与 all IPv4 addresses on the local machine 匹配的全部地址,其中包括本地地址,如 192.168.0.1 和 127.0.0.1 以及用于与服务器的传入连接的 IP 地址。

    3. 就像我说的,这是远程服务器上运行的代码。

    4. 我认为您需要做的是找到某种方法来制作对这个 Web 服务的请求,以便它显示 /flag.txt 的内容,而不是(或者可能除了)只是打个招呼。快速搜索“flask 包含文件漏洞”之类的内容应该可以让您了解如何解决此问题。

    【讨论】:

    • 嘿,非常感谢。这现在更有意义了。只是为了确定(即使此任务不需要)当您通过 ctrl+C 退出时,运行烧瓶程序提供的网页服务器会关闭?
    • 是的。如果我没记错的话,Flask 服务器会打印出 HTTP 请求日志到标准输出,直到你用 ^C 退出,此时它将停止监听任何端口。
    • 好的,非常感谢。不胜感激。感觉完全卡住了,但现在感觉很明显。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多