반응형
문제분석 & 풀이
웹쉘을 업로드하고 "cat /flag"를 실행하라는 미션이 주어진다.
웹 쉘 코드를 작성하고 업로드했다.
wrong type 이라고 뜨면서 업로드가 실패한다.
PHP 확장자 파일을 업로드 하지 못하게 검증하는 것 같다.
확장자 검증을 우회하기 위해 webshell.php 뒤에 .jpg 를 붙여서 업로드했다.
업로드 된다!
그러나 이 파일은 .jpg 파일이기 때문에 파일에 접근하더라도 웹 쉘을 실행할 수 없다.
중요한 사실은 확장자에 대한 검증을 수행하는 방식이 아니라 다른 방식으로 업로드 파일에 대한 검증을 수행한다는 점이다.
업로드 과정의 패킷을 잡아보자.
패킷 데이터 영역 부분을 보면, Content-Type이 image/jpeg이다. 여러 차례 테스트를 해보면 알 수 있지만, Content-Type을 통해서 파일에 대한 검증을 수행한다.
정리하자면, Content-Type을 image/jpeg로 조작하고 webshell.php를 업로드하면 우회된다.
Content-Type은 image/jpeg로 조작하고 webshell.php를 업로드했다.
웹쉘에 접근해서 명령어를 실행해보자.
cat /flag"를 실행하면, flag를 획득할 수 있다.
반응형