티스토리 뷰
웹쉘 파일을 업로드하는 문제이다. 파일의 타입이 힌트라고 한다.
코드에는 특별한 힌트가 없다.
메모장으로 hello.php라는 파일을 만든 후 첨부하여 제출하였더니 access denied라고 뜬다.
이미지 파일을 업로드 시켰더니 업로드가 정상적으로 된다.
php파일에 대해서 필터링이 걸려있는 것 같다.
문제에 주어진 힌트는 파일 타입이었다. 파일 타입을 변조한다면 php파일의 업로드가 가능해질 것이다.
일단 hello.php파일의 Content-Type은 application/octet-stream이다.
이 Type의 파일은 업로드할 수 없다.
1.png파일의 Content-Type은 image/png이다.
이 Type의 파일은 업로드 가능하다. 이를 통해 서버에서 파일의 유효성을 검사할때 Content-Type 만을 확인한다는 것 을 알 수있다.
따라서, php파일의 Content-Type을 image/png로 바꾸어 줄 것이다.
hello.php의 Content-Type을 application/octet-stream에서 image/png로 바꾸어주었다.
클리어
이 문제의 페이지는 파일 업로드 필터링이 파일 타입에 대해서만 되어 있고,
파일 타입을 클라이언트에서 수정(조작)할 수 있다는 취약점을 가지고 있다.
따라서 파일 유효성 검사가 파일 타입을 통해서만 수행되지 않도록 해야하고, 클라이언트에서 파일 타입(Content-Type)을 조작(수정)하지 못하도록 하는게 안전하다.
'hacking > webhacking.kr' 카테고리의 다른 글
<webhacking.kr> - 32번 (0) | 2018.02.13 |
---|---|
<webhacking.kr> - 11번 (0) | 2018.02.13 |
<webhacking.kr> - 36번 (0) | 2018.02.12 |
<webhacking.kr> - 23번 (0) | 2018.02.12 |
<webhacking.kr> - 31번 (0) | 2018.02.12 |