Webhacking.kr old-43 write up

전수경·2024년 3월 27일
0

write-up

목록 보기
8/10

old-43

딱히 문제 설명이 없고 webshell을 업로드하고 /flag를 출력하라고 한다.
제출하면 어떻게 되는지 확인하기 위해 곰돌이 사진 파일을 업로드해본다.
Done!이라고 뜬다.
딱히 모르겠으니 주어진 설명이 적힌 php 코드를 생성해준다.
wrong type이라는 문구가 뜬다.
type 확인을 위해 개발자 도구를 통해 request header의 Accept을 확인한다.

Accept 헤더는 데이터 타입(MIME)을 다루는 헤더이다. Accept 헤더는 클라이언트가 서버에게 어떤 특정한 데이터 타입을 보낼때 클라이언트가 보낸 특정 데이터 타입으로만 응답을 해야한다.


webshell 파일이 타입이 제대로 인식되지 않는 것 같으니 burp suite를 이용해 파일을 올릴 때 어떻게 인식되는지 확인해본다.
Content type이 application/octet-stream인 것을 확인할 수 있다.

Content-Type: HTTP 메시지(요청과 응답 모두)에 담겨 보내는 데이터의 형식을 알려주는 헤더이다.

application/octet-stream는 다른 모든 경우를 위한 기본값이다. 알려지지 않은 파일 타입은 이 타입을 사용해야 한다.


ex. text/html, image/avif, application/xml 등

계속해서 똑같이 인식 안되던 중 아까 우연히 넣은 png 파일에서 Done!이 뜬게 생각나서 'image/apng'를 넣어서 실행해본다. 실행하니 똑같이 Done!이라고 뜬다.

이제 끝났으니 intercept를 끄면 내 php 코드를 인식해 flag가 뜬다. 인코딩 된 값이긴 한데 저 자체가 Flag였다.

profile
Cyber Security

0개의 댓글