이렇게 파일이 올라가고, 저 링크를 누르면
read 경로에 name 필드로 올린 파일 명이 지정이 된다.
@APP.route('/read')
def read_memo():
error = False
data = b''
filename = request.args.get('name', '')
try:
with open(f'{UPLOAD_DIR}/{filename}', 'rb') as f:
data = f.read()
except (IsADirectoryError, FileNotFoundError):
error = True
return render_template('read.html',
filename=filename,
content=data.decode('utf-8'),
error=error)
app.py 부분의 read_memo() 부분인데, {UPLOAD_DIR}/{filename} 경로의 파일을 읽는데 filename에 /나 ..를 필터링하고 있지 않아서 filename을 이용하여 UPLOAD_DIR 이외의 경로의 파일을 읽을 수 있다.
[Dreamhack] csrf-1 (0) | 2022.12.10 |
---|---|
[Dreamhack] proxy-1 (0) | 2022.01.04 |
[Dreamhack] command-injection-1 (0) | 2022.01.03 |
[Dreamhack] pathtraversal (0) | 2021.03.08 |
[Dreamhack] simple_sqli (SQL Injection) (0) | 2021.02.09 |