파일 다운로드 취약점에 관련된 문제인데 저번에 풀어본 pathtraversal과 비슷한 느낌이다.
첫 화면이다.
어떤 역할을 하는지 테스트 하기 위해 아무거나 입력하고 Upload를 눌러본다.
홈 화면에 가보면 test라는 항목이 생긴다. 여기 들어가서 내용을 보면
아까 입력한 제목과 내용이 잘 나온다.
flag값은 flag.py 파일안에 있다고 했으니 적절히 경로를 바꿔 flag.py로 접근을 해야 한다.
url을 보면 test의 내용을 보는데 name=test라고 나와있다.
이것을 통해 파일이름을 read라는 페이지에 전달해 파일을 가져온다는 것을 알 수 있다.
따라서 파일이름을 flag.py의 경로로 설정해주면 된다.
이렇게 입력한다면
오류가 발생한다.
문제 파일을 열어보면
파일이름(filename)에 ..이라는 요소가 있으면 에러를 반환하도록 설정되어 있다.
따라서 filename에 ../과 같은 코드를 사용할 수 없다.
파일을 읽어오는 코드를 보면 필터링을 하지 않는다는 것을 알 수 있다.
filename을 통해 파일을 불러와 content에 그 파일의 내용을 넣고 read페이지에서 보여준다는 것을 알 수 있다.
하지만 file이름은 query string으로 전달받으며 필터링도 하지 않는다.
따라서 원하는 파일의 경로와 이름을 query string으로 넘겨주면 해당 파일에 접근할 수 있다.
이렇게 넣어서 접근하게 되면
flag.py에 접근할 수 있고 그 안의 내용을 볼 수 있다.
'보안 > Dreamhack' 카테고리의 다른 글
Dreamhack: simple_sqli (0) | 2022.04.06 |
---|---|
Dreamhack: pathtraversal (0) | 2022.04.04 |
Dreamhack: xss-1 (0) | 2022.04.03 |
Dreamhack: cookie (0) | 2022.04.03 |