CakeCTF 2022 - readme2022 (misc)
분석 환경: Ubuntu 20.04
사용자 제공 파일: 소스코드(python)
Analysis
1 | import os |
제공된 server.py 소스코드 전문이다.
코드를 읽다보면 뭔가 핵심인 것 같은 부분을 찾을 수 있다.
1 | filepath = os.path.expanduser(filepath) |
filepath
에 ~<username>
를 입력한다면 home 디렉토리 path가 바뀌게 되는데 이것을 이용하여 문제를 푸는 것이다.
소스코드가 제공되었으니까 filepath를 출력해서 확인해보자.
1 | jir4vvit@ubuntu:~/ctf/cake/readme2022$ python3 server.py |
이런 느낌이다..
/etc/passwd
을 확인하면 아래와 같은 정보가 있는데,
1 | sys:x:3:3:sys:/dev:/usr/sbin/nologin |
sys 사용자의 home 디렉토리가 /dev
인 것을 알 수 있다.
더불어 문제에서 /flag.txt
를 open하고 close하지 않았음으로 file descriptor가 계속 살아있음을 알 수 있다. (!)
Solve
1 | jir4vvit@ubuntu:~/ctf/cake/readme2022$ python3 server.py |
설명을 조금 추가하자면, 지금 sys 사용자의 홈 디렉토리로 변경되었으니 /dev
가 filepath(homepath)가 되었고, 정확히는 /dev/fd/3
에 접근한 것이다.
More
개인적으로 재미있는 문제라고 생각되어 블로그에 꼭 기록하고 싶었다.
아, File Descriptor에 대한 설명은 나의 과거 티스토리 블로그에 있다. ㅎ