Beginner

file-download-1

web
  • 문제 정보
  • 풀이 275
  • 난이도 투표 15
  • 질문 10
  • 최근 풀이자 6576
  • 댓글 296

문제 설명

File Download 취약점이 존재하는 웹 서비스입니다.
flag.py를 다운로드 받으면 플래그를 획득할 수 있습니다.

Reference

Introduction of Webhacking

출제자 정보

avatar
Dreamhack
대표 업적 없음

First Blood!

avatar
Alona
워게임: 50
출제된 지 22시간 만에 풀이 완료!

난이도 투표 15

질문 10

문제 풀이에 어려움이 있으신가요?
커뮤니티에서 문제에 대한 질문하고 답변 얻기
웹 셸 풀이
#!/usr/bin/env python3 import os import shutil from flask import Flask, request, render_template, redirect from flag import FLAG APP = Flask(name) UPLOAD_DIR = 'uploads' @APP.route('/') def index(): files = os.listdir(UPLOAD_DIR) return render_template('index.html', files=files) @APP.route('/upload', methods=['GET', 'POST']) def upload_memo(): if request.method == 'POST': filename = request.form.get('filename') content = request.form.get('content').encode('utf-8') if filename.find('..') != -1: return render_template('upload_result.html', data='bad characters,,') with open(f'{UPLOAD_DIR}/{filename}', 'wb') as f: f.write(content) return redirect('/') return render_template('upload.html') @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) if name == 'main': if os.path.exists(UPLOAD_DIR): shutil.rmtree(UPLOAD_DIR) os.mkdir(UPLOAD_DIR) APP.run(host='0.0.0.0', port=8000) 안녕하세요. 혹시 해당 문제에서는 /upload 엔드포인트에서 웹 셸을 업로드해서 공격할 수 없는 이유가 정확히 무엇인지 알 수 있을까요 ? /read 페이지로 UPLOAD_DIR/filename 에 접근하는 것이 아니라, 데이터 자체를 읽어서 가져오기 때문인가요?
ro

최근 풀이자 6576

밍쪼
대표 업적 없음
ddoe
대표 업적 없음
윤주
대표 업적 없음
seo1
대표 업적 없음
공룡은살아있다
대표 업적 없음
Beef
대표 업적 없음
황록
대표 업적 없음
avatar
박살이
대표 업적 없음
jihoon3007
대표 업적 없음
Tide
대표 업적 없음

댓글 296

권도형봇
대표 업적 없음
여러분은 할 수 있습니다.
권도형봇
대표 업적 없음
직관적으로 생각하세요
Chriskmas
대표 업적 없음
혼자 낑낑대다가 정 안되면 풀이 검색해보는데 알고 나면 쉽지만 혼자서는 감도 안 잡힌다는거..
O_F
대표 업적 없음
간단하게 생각해야 합니다. 코드를 살펴보면 경로가 보입니다.
제트스트림
대표 업적 없음
경로를 너무 많이 올라가서 찾앗네요
avatar
T0pCcr4t
대표 업적 없음
포기만 하지 맙시다.
다 뚫자
대표 업적 없음
문제 의도 생각하기. 애초에 내부 경로를 알 수 없으니, 적당한 곳에서 찾을 수 있음... 하.. 이런 쉬운거에 몇 분을 쓴거야 정말!!!!!!!으앆!!
Code-SHD
대표 업적 없음
../
AN_hyeon_min
대표 업적 없음
read?name= 하고 ..// 구문을 이용해보세요
toffeenutt
프레시맨
10초컷..