CTF/MISC

[D^3CTF] d3readfile - MISC / locate

SecurityMan 2023. 5. 27. 11:00

 

쉬울거라고 생각했는데

 

생각보다 좀 어려웠던 MISC 문제

 

MISC는 miscellaneous의 약자로 여러가지 잡다한 이라는 의미를 가지고 있다.

 

어떤 파일이든 읽을 수 있기에 플래그도 읽을 수 있다... 의미심장하다.

 

반응형

 

 

문제 소스파일은 따로 주어지지 않고

 

웹 페이지 주소만 주어진다.

 

주어진 주소로 들어가보면

 

File Request 라는 문구와 함께 뭔가 입력할 수 있는 창이 있다.

 

 

입력창에 /etc/passwd 를 입력해봤더니

 

/etc/passwd 파일의 내용이 출력되는것을 볼 수 있다.

 

입력창을 통해 서버에 있는 파일을 가져와 읽을 수 있다는 것이다.

 

문제는 플래그가 들어있는 파일명이 무엇인지 모른다는 것이다.

 

 

이것저것 파일을 불러와서 읽어보다가

 

/proc/1/environ 파일을 불러와 읽어봤다.

 

해당 파일에는 환경변수 정보가 들어있는데

 

환경변수중에 눈에띄는 HINT 라는 변수가 있었다.

 

 

Base64 로 인코딩된 것 같아

 

CyberChef(https://gchq.github.io/CyberChef/) 에서 디코딩을 해봤다.

 

where is the flag... we have to find a way to locate the flag!!

 

라는 문구가 출력된다.

 

이게 대체 무슨 힌트가 싶어서 계속 보다보니

 

locate 라는 단어가 힌트였다.

 

locate는 리눅스에서 사용하는 명령어 중 하나이다.

 

locate 명령어로 원하는 파일의 위치를 찾을 수 있다.

 

 

예를들어 

 

이렇게 testfile 이라는 파일이 있을 경우

 

 

sudo updatedb 명령어를 입력하면

 

시스템 내에 파일의 정보가 모두 db에 저장된다.

 

그런 상태에서 locate <파일명> 으로 검색하면

 

위와 같이 해당 파일의 절대경로가 출력되게 된다.

 

 

db 파일의 위치는 버전마다 다른데

 

하나씩 시도하다보면 찾을 수 있다.

 

문제 서버에서는

 

/var/cache/locate/locatedb 경로에 db 파일이 있었다.

 

 

내리다보니 중간에

 

flag_1s_h3re_233 이라는 파일이 보였다.

 

 

해당 파일의 절대경로를 입력창에 넣어주면

 

플래그가 출력된다.

반응형