dreamhack file-download-1 풀이
파일 다운로드 취약점을 이용한 문제였다.
접속정보를 받고 접속을 해보니
Home, Upload My Memo 그리고
Your uploaded memos 라고 되어있었다.
Upload My Memo에 가서 보니 내가 업로드할 수 있는 창이 나왔다.
분명 파일 다운로드 취약점이라 했는데.... 내가 왜 업로드해야 하지 하고
Filename에 first, Content에 first 라고 입력한 뒤에 Upload해 보았다.
Home에 first가 생겼고
눌러보니 first 내용도 적혀 있었다.
어떻게 하지 고민하다 파일 이름을 적는 칸에 ../를 넣어보았다.
그 결과 bad characters,,라고 되었다.
그럼이제 이 문제를 어떻게 풀어야 할지 감이 잡히기 시작했다.
제목에 취약점을 적어서 flag.py파일을 다운받으면 문제가 해결될 것이다.
하지만 코드를 살펴보면
filename.find('..') != -1:
이렇게 차단되어있다. 그렇다면 etc로도 해보면 어떻게 될까
그냥 페이지가 나가 버린다.
그럼 '..'이 필터링 되고 있으니 ..을 인코딩 해서 넣어보자.
..을 인코딩하면 %2e%2e가 된다.
자 드가자~
엥? 그래도 다시 페이지 자체가 나갔다.
흠... 그럼 /까지 전부 인코딩해보자
/를 인코딩하면 %2f가 된다.
그럼
가보자
일단 생겼다. 한번 눌러보자
와! 정답! FLAG를 얻었다!
파일 다운로드 취약점의 중요한 부분인 '../'를 필터링한 문제였고 그것을 우회하는 방법에 대해 알 수 있었던 문제였다.