문제의 웹페이지 입니다. hello와 test를 눌러보면 이글은 테스를 하기 위한 파일 이란 단서를 얻을 수 있다.
문제를 다시 보면.
/flag 파일을 실행하여 플래그를 가져올 수 있습니다. 라는 문구가 있으니 저 파일을 이용하면 될 것 같습니다.
웹 사이트 주소창에 /flag를 쳐보았지만 바로 검열이 되어 퍼센트 인코딩으로 flag를 찾아 보았지만 전부다 방어하는 모습을 볼 수 있다.
data 프로토콜은 파일의 콘텐츠를 URL로 직접 삽입할 수 있으며, base64 인코딩도 지원이된다.
이제 이를 활용하여 PHP 코드가 실행되도록 페이로드를 작성해 보자. data:text/plain;base64,PD9waHAgZWNobyAiSGVsbG8hIiA/Pg==를 입력하면
위와같이 왼쪽상단에hello!가 추가된다
<?php system('/flag'); ?>를 base64로 인코드해주면PD9waHAgc3lzdGVtKCcvZmxhZycpOyA/Pg==라는 결과값이 나온다.
전에 구했던 페이로드의 앞 data:text/plain;base64을 합쳐서 입력해주면 flag값을 구할 수 있다.