일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사 실기
- Spring MVC
- SQL
- webhacking
- webhacking.kr
- 워게임
- Pwnable.kr
- 웹해킹
- LOB
- 운영체제
- Buffer Overflow
- BOF
- wargame
- Spring Framework
- Lord of BOF
- 정보보안기사
- OS
- Spring
- stack overflow
- hacking
- system hacking
- Payload
- pwnable
- PWN
- Operating System
- Shell code
- 해킹
- 정보보안기사 실기
- 네트워크
- System
- Today
- Total
DongDD's IT
[2017 Oman CTF Quals] Join Team(Web, Medium, 100 point) 본문
[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 **************
이런 방식으로 문제를 해결해본 것은 처음이라 굉장히 재미있었던 문제같다. 업로드를 보면 파일업로드 취약점밖에 떠오르지 않았었는데 새로운 방법에 대해 알 수 있었고 공부할 수 있어서 좋은 기회였던것 같다.
'CTF > Write-up' 카테고리의 다른 글
[2018 Angstrom CTF] Write-up(Web, Reversing, Binary) (0) | 2018.03.19 |
---|---|
[2018 Angstrom CTF] Write-up(MISC,Crypto) (0) | 2018.03.19 |
[2018 Pragyan CTF] Write-up & 후기 (0) | 2018.03.05 |
[2017 SECCON CTF Quals] Write-up & 후기 (0) | 2017.12.10 |
[2017 Oman CTF Quals] Cool Name Effect(Web, Easy, 50 point) (0) | 2017.11.07 |