Rating: 5.0

php File Upload 취약점 문제입니다.

이미지를 업로드하라고 합니다.

그런데 여기서 다른 파일 (.zip 파일, .php 파일 등) 을 업로드하면 이미지 파일이 아니라고 합니다.

그래서 file Magic Number만 가지고 따지나 싶어서 파일의 앞 부분을 사진 파일의 Magic Number로 교체해준 뒤 업로드 해보았습니다.

그런데도 안되더군요.

그래서 특단의 조치를 내린 것이, JPEG는 FF D9으로 파일이 시작하기 때문에 EOF 에러가 발생하는 것이다라고 가정을 세우고 100*100 Pixel의 PNG 파일로 쿄체한 뒤 FF 등의 16진수를 다 지우고 테스트를 해보았습니다.

최종적으로 나온 파일의 HxD 구조는 아래와 같습니다.

PNG 파일에 뒤에 `` 를 추가한 형태입니다.

위에 보시면 shell_exec 함수를 통해서 바로 flag를 출력하도록 되어있는데,

그 이유는 웹쉘을 업로드해서 권한을 확인했을 때 flag를 읽을 수 없는 권한으로 되어있었기 때문에, 한 번에 flag를 읽어오도록 구성하였습니다.

즉 결론적으로 PNG 파일의 끝에 php 코드를 삽입하여 파일 업로드를 한 뒤 그 취약점을 활용했다라고 볼 수 있겠습니다.

플래그는 `flag{y3t_an0ther_file_uplo@d_vuln}` 입니다.