[Dreamhack] War Game 1단계 - Web File-Download-1
문제
접속 정보
Home
Upload My Memo
test 파일 조회(다운로드)
- 클릭시 이런식으로 조회(다운로드)된다.
- url을 확인해보면 GET 방식으로 name 메소드가 쓰인다.
flag.py
- flag.py를 다운받아야하니 flag.py를 만들어 업로드해보자
- 뭐 없슴..
- 소스 코드를 좀 살펴보자
소스 코드
- upload_memo()
- if - with 절에서 filename에 ‘..’이 들어가면 ‘bad characters’를 출력하고
- 업로드 성공시 UPLOAD_DIR/{filename}의 디렉터리로 등록된다.
- 즉, 업로드된 디렉토리가 UPLOAD_DIR이라는 곳이기 때문에 상위경로(../)를 이용해 이곳에서 flag.py를 다운로드(접속 정보 페이지에서는 조회)
접속 정보
Upload My Memo
- 상대경로(../)를 이용해야 하지만 위 소스코드에서 보았듯이 Filename에 상대경로(…/)가 들어갈시 오류 메시지 출력한다.
- 그렇다면 ‘소스코드’ 보기전 ‘접속 정보’에서 만들었던 파일로 이동하여 GET 방식의 요청을 이용해 name 매개변수에 상대경로를 이용해보자
flag.py
-
GET 방식의 웹페이지에서 매개변수인 name을 이용해 상대경로를 이용하니
-
다음과 같이 FLAG 출력
FLAG = 'DH{uploading_webshell_in_python_program_is_my_dream}'