
https://dreamhack.io/wargame/challenges/418
파일 업로드 기능을 악용하여 서버의 권한을 획득하는 문제입니다.
문제에 언급된 htaccess 파일을 이용하는 문제임을 유추할 수 있습니다.
.으로 시작하여 일반 파일 목록에 보이지 않는 숨김파일입니다.
upload.php를 확인해 보았습니다.
$deniedExts = array("php", "php3", "php4", "php5", "pht", "phtml");
위 코드를 통해 php파일의 업로드가 차단되어 있음을 확인할 수 있습니다. 웹 사이트가 php로 제작되었기에, 파일 업로그 공격을 하려면 php파일을 업로드 해야 하는데, 막혔기에 우회법을 찾아야 함을 알 수 있습니다.
2. 문제에서 언급된 .htaccess 파일 을 통해 필터링을 우회할 수 있습니다.
AddType application/x-httpd-php .txt
AddType : 웹서버 설정 지시어로, 특정 확장자를 가진 파일을 어떤 타입으로 처리할지 지정하는 명령어입니다.application/x-httpd-php : 해당 확장자의 파일을 PHP 코드로 해석해서 실행하라는 뜻입니다..txt : 설정이 적용될 파일 확장자입니다.위의 설정 명령어를 메모장에 작성하고, 파일명을 .htaccess , 저장 유형을 모든 파일 로 설정하고 저장합니다.
.htaccess 파일을 업로드 합니다.

웹쉘을 .txt 형식으로 저장합니다. 저는 커맨드 입력창만 제공하는 아주 간단한 php 웹쉘을 사용하였습니다.

※ 교육용 / 분석용 목적입니다.
웹쉘을 업로드 해줍니다.

웹쉘 업로드 링크를 클릭하면 정상적으로 작동하는 것을 확인할 수 있습니다. .txt 파일을 업로드 하였지만 .htaccess 파일 덕분에 php형식의 웹쉘 업로드에 성공하였습니다.
플래그 위치에 대한 힌트는 주어지지 않았지만, 있을거라 예상되는 위치인/flag 을 입력하였더니 플래그 값을 획득할 수 있었습니다.

.htaccess 에 대해 배웠습니다. .txt 파일로 업로드를 하여도 이를 PHP로 인식하게 하는 등, 특정 디렉토리의 설정을 변경할 수 있게 하는 강력한 우회 파일을 알게 되었습니다..htaccess files, which allow directory-specific configuration changes on Apache web servers..htaccess can be used to bypass upload restrictions by making .txt files be interpreted as PHP scripts..txt and use .htaccess to execute them.