티스토리 뷰

hacking/webhacking.kr

<webhacking.kr> - 43번

khe0616 2018. 2. 12. 19:14

웹쉘 파일을 업로드하는 문제이다. 파일의 타입이 힌트라고 한다.








코드에는 특별한 힌트가 없다.










메모장으로 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
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함