본문 바로가기
해킹 공부/웹해킹

에러 메시지, error messages are useful than you think

by zzzmilky 2021. 1. 24.

41번 문제.

41번 문제다. 이렇게 파일 선택과 upload 버튼이 있고, view-source가 있다. 우선 파일을 하나 선택해 upload 해보기로 했다.

파일 "ddddddddddddddddddddddddddddddddddddddddddddd.php"를 업로드.

파일명 하나를 길게 지정하고 upload 해보았다. Done~ 이라는 메시지 하나만 뜬다. 소스코드를 살펴보자.

view-source

코드를 살펴보면, 파일명에서 여러 기호들 등등을 필터링하고, upload_dir에 저장해 flag를 그 위치에 작성한다고 되어있다. 핵심은, upload_dir의 이름을 알아내는 것이었다.

파일명을 최대한 길게해 에러 메시지가 뜨도록 하는 방법으로, 파일 경로를 찾아내야했다. 내가 내 컴퓨터에서 파일명을 직접 수정해 업로드하는 방법 외에, Burp Suite를 통해서 파일명을 엄청 길게 지정해줘야 했다. 

 

Request

 

버프 슈트로 프록시에서 잡아 파일명을 수정해줘야했다. filename을 내가 직접 업로드한 파일명인 "ddddddd........php" 보다 더 길게 설정해보았다.

 

"Repeater"에서 확인.

"Intercept" 옵션에서 우클릭하여 "Repeater"로 이동해 작업해보았다. "Repeater" 옵션은 수동 제어 및 HTTP 요청을 재요청하는데 사용된다. 왼쪽의 Request를 수정해서 Go버튼을 누르면 오른쪽으로 Response가 날아온다.

 

왼쪽에서 filename을 엄청 길게 설정했다. 그랬더니 오른쪽에서 Warning이라는 에러 메세지와 함께 파일 경로가 공개된다. 이때 upload_dir은 저 드래그한 주황색 부분임을 확인할 수 있다.

 

따라서, 다시 한번 정상적인 파일명을 설정 해주고 Request를 보낸다면, 그 Response로 flag를 확인할 수 있을 것이다.

 

정상적인 파일명
Flag 확인

이로써 처음으로 버프 슈트로 문제를 풀어보았다! 이번 문제는 에러 메시지의 중요성을 알려주는 문제였다. "error_msg_is_more_useful_than_you_think". 이러한 이유로 보안을 위해선 에러 핸들링을 철저히 해야하는 것 같다.

댓글