DongDD's IT

[2017 Oman CTF Quals] Join Team(Web, Medium, 100 point) 본문

CTF/Write-up

[2017 Oman CTF Quals] Join Team(Web, Medium, 100 point)

DongDD 2017. 11. 8. 16:31

[2017 Oman CTF Quals] Join Team(Web, Medium, 100 point)



Problem : Flag safe in the server environment , can you reveal it.


Challenge Link: http://ec2-34-214-177-6.us-west-2.compute.amazonaws.com/join-team/


Flag가 서버의 환경에 저장되어 있다. 이것을 볼 수 있는가라고 물어보는 문제였다. 아마 environment는 환경변수를 뜻할수도 있다는 생각이 들었다.


문제의 사이트에 접속하니 다음과 같은 페이지가 나왔다. 메인에는 글이 써있었고 버튼에는 Home, About, WorkForUs 이렇게 3개의 버튼이 있었다. Home은 위 사진같이 나와있었고 About도 비슷한 형태로 되어있었다.


Flag를 얻어낼 수 있을 것 같이 보이는 페이지는 WorkForUs였다. '이력서를 Upload하라'라고 써있고 파일을 하나 업로드할 수 있게 되어있엇다. 처음에는 파일 업로드인 것을 보고 파일 업로드 취약점을 이용하는 문제일거라 판단하였다. pdf file만 올릴 수 있다는 글이 있어서 php로된 webshell을 올려보았지만 실패하였다. 소스코드를 수정해 pdf를 제외한 다른 파일을 올릴 수 있게 해보았지만 서버단에서 이런 필터링을 한번 더 거쳐 pdf파일만 올리게 해놓은 것 같았다. 그래서 일단 아무 pdf 파일이나 올려보았다.



다른 파일을 올렸을 때는 다 실패했지만 pdf파일을 올리니 성공적으로 완료되었다고 뜨고 올린파일의 이름에 링크가 걸려있었다. 아마 서버측에 제대로 업로드되었다는 의미의 출력인 것 같았다.



업로드된 파일을 클릭해보니 다음과 같은 링크로 이동했다. join-team/data/라는 디렉토리에 올린 파일 aaa.pdf가 저장되어있는 것으로 볼 수 있었다. 처음에는 이 문제를 어떻게 해결해야될지 몰라 pdf파일에 webshell코드를 넣어보고 어떻게든 pdf가 아닌 확장명으로 올려볼려고 시도해보았지만 모두 실패했다.

여러 실패를 거듭한 후 홈페이지를 돌아보다 특이한 사항을 발견해 시도해보았다.


index.php? 뒤에서 특정파일을 실행시킬 수 있는 것을 발견했다. 기본 루트는 아마 Join-Team일거라고 생각하고 data폴더에 저장되있는 파일을 실행했다. 처음에는 아무 pdf파일을 올려 에러메시지가 출력되어 php소스코드를 넣은 pdf를 업로드해 실행해보니 위와 같은 화면을 볼 수 있었다.


1
2
3
4
<?php
    echo system("ls");
?>
 
cs


system 함수를 이용해 ls를 실행한 pdf파일을 올려 ?data/aaa.pdf를 실행해보았더니 현재 directory에 있는 파일 목록이 출력되었다. 즉, pdf파일을 변형하지 않고 pdf파일에 php 소스코드를 삽입해 실행시킬 수 있다는 것을 알게 되었다. 서버 환경을 볼 수 있다면 flag를 얻어 낼 수 있을 것 같았다.



1
2
3
4
<?php
    phpinfo();
?>
 
cs


php에 대한 정보를 출력하는 함수를 사용하여 pdf에 삽입해주고 pdf를 재업로드해보았다. php의 서버 환경을 볼 수 있는 함수를 사용하여 환경변수를 찾아보려고 생각했다.




위에서 aaa.pdf를 실행했던 것 처럼 이번에는 php정보를 출력하는 aaaa.pdf파일을 실행해보았더니 위와 같이 php에 대한 정보들을 볼 수 있었다. flag가 나와있을 것 같아 "flag"를 검색해보니 서버에 저장된 flag를 찾을 수 있었고 문제를 통과할 수 있었다.












**************     Answer & Flag     **************




이런 방식으로 문제를 해결해본 것은 처음이라 굉장히 재미있었던 문제같다. 업로드를 보면 파일업로드 취약점밖에 떠오르지 않았었는데 새로운 방법에 대해 알 수 있었고 공부할 수 있어서 좋은 기회였던것 같다.


Comments