file-download-1 풀이

2021. 5. 9. 14:11Dreamhack Wargame

728x90

문제 제목
문제 정보

항상 하던대로 웹사이트 접속 + 문제 파일 다운로드

 

문제에서 제시된 코드
웹페이지 메인화면

웹페이지 메인화면에는 파일이 아무것도 없는게 정상입니다.

문제를 풀고 나서 이 게시글을 작성하는거라

제가 만들었었던 게시글이 메인 화면에 보이는거죠.

 

우선 코드를 먼저 보겠습니다.

 

코드에는 index, upload_memo, read_memo 이렇게 세 가지 함수가 들어있습니다.

index는 보니 별다른 내용이 없는 것 같습니다.

 

중요하게 봐야할 부분은 upload_memo와 read_memo입니다.

 

upload_memo에서

if filename.find('..') != -1: 이라는 부분이 있습니다.

파일 이름, 그러니까 우리가 업로드 할 게시글의 제목에 ..이 포함 되어 있는지 확인하는 if문입니다.

 

여기서 궁금증이 하나 들 것입니다.

"다른 것도 아니고 왜 굳이 ..을 필터링 하는거지?"

 

파일의 구조에서 이름과 위치를 모르는 상위 디렉토리를 참조하기 위한 명령어가 있습니다.

바로 ../입니다.
우리가 찾아야 할 flag.py도 현재 위치가 아닌 그 어딘가에 있는 것이기 때문에

../를 사용해야 하는데, 제목에서 ../를 사용하는 것을 방지하기 위해

이렇게 제한을 걸어둔 것입니다.

 

이제 봐야 할 부분은 read_memo입니다.

코드를 보면 알 수 있듯이 read_memo 부분에는 필터링 if문이 없습니다.

그렇기에 우린 이 부분을 활용해야 합니다.

 

필자가 멍청하다는 것을 알려주는 사진

...네

이 전까지 분석 다 해놓고 내용 란에 저렇게 써놨습니다.

정말 멍청하죠?

쓰고 나서도 스스로 어이없어서 좀 웃었습니다.

 

정신 차리고 제대로 풀이를 적어보겠습니다.

 

ㄹㄴㅁㅇㄹ라는 게시글에서 URL을 보면

/read?name=ㄹㄴㅁㅇㄹ라고 되어있습니다.

그리고 아까 분석했던 내용 중에서

read_memo에는 필터링이 없다는 정보가 있었습니다.

이 두 가지 정보를 이용해서 우리가 얻어야 하는 flag.py를 얻어보겠습니다.

 

링크 주소 복사

만든 게시글 중 아무거나 하나를 골라서 우클릭으로 링크 주소 복사를 해보겠습니다.

host1.dreamhack.games:22548/read?name=%E3%84%B9%E3%84%B4%E3%85%81%E3%85%87%E3%84%B9

이런 링크 주소가 나왔습니다.

 

여기서 = 뒤에 나오는 것들은 지우고 ../flag.py를 써서 URL 창에 입력해보겠습니다.

 

FLAG 획득 완료

분석을 하는 과정이 실제 실행을 하는 과정보다

더 오래 걸렸던 문제였습니다.

 

문제 풀이 성공

 

728x90

'Dreamhack Wargame' 카테고리의 다른 글

basic_exploitation_001 풀이  (0) 2021.07.10
broken-png 풀이  (0) 2021.06.03
pathtraversal 풀이  (0) 2021.05.29
simple_sqli 풀이  (0) 2021.05.08
cookie 풀이  (0) 2021.03.09