문제에서 'Double extensions' 부분을 통해 확장자를 두번 사용하라는 것인지 생각하며 문제에 접근하였다.
문제 페이지에 접속하니 아래와 같은 메인 페이지를 볼 수 있었다.
다른 카테고리는 모두 카테고리 명과 관련된 이모지가 들어있었고, upload 카테고리에는 아래와 같이 사진을 업로드할 수 있는 페이지로 구성되었다.
업로드 버튼을 클릭하니 사진을 업로드 할 수 있는 페이지로 전환되었고, 가장 마지막에 업로드 가능한 확장자들이 언급되어 있었다.
우선 파일 업로드 취약점이니 간단한 원격 쉘 실행 코드를 작성하고 이를 php 확장자로 저장하였다.
⚡ 코드 해설
1. '<?php' 와 '?>' 사이에 있는 부분은 PHP 코드로, 웹 서버에서 실행된다.
2. system() 함수 : 명령어를 실행하는 PHP 함수로, 외부 명령어를 실행하고 그 결과를 반환한다.
3. $_GET[cmd] : HTTP GET 요청으로 전달된 cmd 매개변수의 값을 가져오는 PHP의 방법이다. 즉, 이 스크립트는 웹 브라우저에서 ?cmd=실행할_명령어와 같은 형식으로 요청을 받아들인다.
당연한 결과이겠지만 php 파일을 업로드 하려고 하니 잘못된 확장자라는 문구가 나왔다.
파일의 확장자를 .png로 확장자를 총 두번 사용하는 것으로 변경해주고
파일이 업로드 되는 것을 볼 수 있었다.
저장된 경로에 접속하여 주소창 맨 끝에 '?cmd=id'를 입력하여 id 명령어를 실행시켜 주었더니 아래와 같은 화면을 볼 수 있었다.
이후, 숨겨진 파일을 모두 포함하여 해당 경로에 있는 파일들을 확인하기 위해 아래와 같은 명령어를 주소창에 입력하여 숨김 파일인 .passwd 파일이 해당 경로에 있음을 확인할 수 있었다.
?cmd=ls%20-al%20/challenge/web-serveur/ch20/
다음은 문제 설명에서 .passwd에 비밀번호가 있다고 했으므로 .passwd 파일의 내용을 보기 위해 cat 명령어를 활용하여 아래와 같은 명령어를 URL 뒤에 파라미터로 삽입해주었다.
?cmd=cat%20/challenge/web-serveur/ch20/.passwd
그 결과 비밀번호로 보이는 문자열을 발견하였고, 이를 비밀번호 입력 칸에 넣으니 문제를 해결할 수 있었다!!
'CTF' 카테고리의 다른 글
[LOS] gremlin write-up (1) | 2023.11.01 |
---|---|
[Dreamhack] simple_sqli write-up (1) | 2023.11.01 |
[RootMe] Install files (0) | 2023.10.01 |
[Webhacking.kr] old-28 write-up (0) | 2023.10.01 |
[Dreamhack] image-storage write-up (1) | 2023.10.01 |