본문 바로가기

Webhacking/Dreamhack

[Web] Dreamhack_ file-download-1

https://dreamhack.io/wargame/challenges/37/

 

file-download-1

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

dreamhack.io


Flag.py를 다운로드 받으면 flag를 얻을 수 있다고 한다.

 

먼저 접속해보면 아래와 같이 memo를 업로드할 수 있는 환경이 주어진다.

 

 

문제에서 주어진 코드를 살펴보자! 조금 길어서 나눠서 보면

 

일단 지금 디렉터리는 uploads이고

 

Upload_memo 함수를 보면 filename과 content를 입력받아서 각각 filename과 content 변수에 넣어준다!

 

그런데 아래의 find 부분을 보면 filename에 “..”이 들어가면 필터링이 되고 있다.

“..”을 못쓰니 일단 filename으로는 디렉터리 이동이 불가능해 보인다.

 

그리고 uploads/[filename]으로 파일을 여는 것 같다?

 

Flag는 상위 디렉터리에 있을 것 같은데..

 

다음을 이어서 보면

 

 

아래 코드는 이렇게 되어있고, 특별한 점은 없는 것 같아서 다시 웹으로 돌아갔다.

 

filename=test, context=test

테스트용으로 아무 메모나 만들어봤더니

내가 입력한 filename에 Memo라는 이름을 붙여서 출력해준다.

 

지난번처럼 개발자도구로 필터링을 삭제할 수 있는 것도 아니고,

도저히 코드의 필터링을 우회할 방법이 생각나질 않아서 이리저리 보던 중에 url이 눈에 들어왔다.

 

Name 변수로 filename을 주고 있는데,,,? name은 필터링이 되지 않는다,,,?

그럼 name을 통해 디렉터리를 이동해서 flag.py 파일을 읽을 수 있지 않을까?

 

 

당장 실행하러 고우고우

../flag.py라고 바꿔서 전달했더니 flag를 획득했다!!

 

관찰력이 중요하다는 생각이 들었던 문제다,,

'Webhacking > Dreamhack' 카테고리의 다른 글

[Web] Dreamhack_ command-injection-1  (0) 2022.08.27
[Web] Dreamhack_ csrf-2  (0) 2022.08.26
[Web] Dreamhack_ xss-2  (0) 2022.08.25
session-basic  (0) 2022.08.15
cookie  (0) 2022.08.15