0

我正在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")
4

1 回答 1

1

我想我可以回答其中的大部分。

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

  2. 您实际上不必自己运行此代码。主机地址是与本地机器上的所有 IPv4 地址0.0.0.0相匹配的包罗万象的地址,其中包括本地地址,如和以及用于与服务器的传入连接的 IP 地址。192.168.0.1127.0.0.1

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

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

于 2020-06-25T23:01:01.960 回答