非常迷失:Flack 和 NYU Osiris 的挑战
Very Lost: Flack and NYU Osiris Challenges
我正在 https://recruit.osiris.cyber.nyu.edu/challenges 参加一些 CTF 挑战。
我得到了一个用于模板编程的任务是“从服务器读取/flag.txt。http://recruit.osiris.cyber.nyu.edu:2000"
我不是在寻求解决方案,但我想更好地了解下面发生的事情:
- 这段代码在做什么?
- 我是否应该担心 运行 使用 host="0.0.0.0" 退出调试模式 and/or?
- 有哪些资源可以帮助我理解这一点?我尝试阅读 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")
我想我可以回答大部分问题。
您可能已经知道,Flask 是一个相当基础的 Web 框架。从外观上看,您拥有的是 CTF 站点上的代码 运行ning 的副本。它只显示两页;一个包含初始 Web 表单 (templates/index.html
),另一个在提供名称时使用查询字符串变量来问候用户 (templates/hello.html
)。
您实际上不必 运行 自己编写此代码。 0.0.0.0
主机地址是匹配 all IPv4 addresses on the local machine 的所有地址,其中包括 192.168.0.1
和 127.0.0.1
等本地地址以及用于传入服务器连接的 IP 地址.
就像我说的,这个是远程服务器上的代码运行ning。
我认为您需要做的是找到某种方式来制作对此 Web 服务的请求,以显示 /flag.txt
的内容而不是(或者可能在除了)只是打个招呼。快速搜索“flask 包含文件漏洞”之类的内容应该可以让您了解如何解决此问题。
我正在 https://recruit.osiris.cyber.nyu.edu/challenges 参加一些 CTF 挑战。
我得到了一个用于模板编程的任务是“从服务器读取/flag.txt。http://recruit.osiris.cyber.nyu.edu:2000"
我不是在寻求解决方案,但我想更好地了解下面发生的事情:
- 这段代码在做什么?
- 我是否应该担心 运行 使用 host="0.0.0.0" 退出调试模式 and/or?
- 有哪些资源可以帮助我理解这一点?我尝试阅读 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")
我想我可以回答大部分问题。
您可能已经知道,Flask 是一个相当基础的 Web 框架。从外观上看,您拥有的是 CTF 站点上的代码 运行ning 的副本。它只显示两页;一个包含初始 Web 表单 (
templates/index.html
),另一个在提供名称时使用查询字符串变量来问候用户 (templates/hello.html
)。您实际上不必 运行 自己编写此代码。
0.0.0.0
主机地址是匹配 all IPv4 addresses on the local machine 的所有地址,其中包括192.168.0.1
和127.0.0.1
等本地地址以及用于传入服务器连接的 IP 地址.就像我说的,这个是远程服务器上的代码运行ning。
我认为您需要做的是找到某种方式来制作对此 Web 服务的请求,以显示
/flag.txt
的内容而不是(或者可能在除了)只是打个招呼。快速搜索“flask 包含文件漏洞”之类的内容应该可以让您了解如何解决此问题。