728x90
1.문제 분석
- 빠르게 삭제되는 임시파일을 얻어내는 문제
- 레이스 컨디션 공격에 대해 알아가는 문제
2. 기본 아이디어
- 심볼릭 링크를 통해 임시파일의 내용을 얻는다.
3.문제 풀이
힌트는 다음과 같다.
tmp는 임시파일 디렉토리다.
분명 문제에서 주어진 대로 생성했으나 tmp에는 보이지 않는다.
리눅스에서 임시파일은 생성된 후 빠르게 삭제 된다고 한다.
그렇다면 어떻게 임시파일의 내용을 볼 수 있을까?
우선 문제의 주제인 레이스 컨디션에 대해 알아봤다.
레이스 컨디션이란 한정된 자원을 얻기 위해 여러 프로세스들이 경쟁하는 것을 뜻한다.
따라서 임시파일이 빠르게 생성, 처리, 삭제되는 순간 SetUID를 가진 파일의 내용을 읽어내야 한다.
가장 좋은 방법은 심볼릭 링크를 통해 임시파일의 내용을 저장하는 것이다.
심볼릭 링크란 리눅스의 바로가기라고 생각하면 편한 것 같다.
원본 파일에 링크를 거는 것인데, 사용 명령어는 아래와 같다.
touch [파일명] | 파일의 생성과 날짜 등을 갱신. 파일이 없다면 크기가 0인 파일 생성 |
ln -s [원본 파일] [링크 파일] | 링크 파일이 원본 파일을 가리키도록 한다. |
이때, 링크파일을 수정해도 원본 파일에 영향을 끼친다.
물론 원본 파일을 삭제하면 링크 파일도 삭제된다.
이를 통해 문제에 접목해보면
심볼릭 링크가 잘 설정된 것을 볼 수 있다.
이제 level5.tmp가 level5tmep를 참조하므로, 삭제되더라도 원본파일에 정보가 남을 것이다.
이렇게, level6의 비밀번호를 얻었다.
728x90
'해커스쿨 ftz' 카테고리의 다른 글
[해커스쿨][F.T.Z] level7 (0) | 2023.03.09 |
---|---|
[해커스쿨][F.T.Z] level6 (0) | 2023.03.06 |
[해커스쿨][F.T.Z] level4 (0) | 2023.02.28 |
[해커스쿨][F.T.Z] level3 (0) | 2023.02.28 |
[해커스쿨][F.T.Z] level2 (0) | 2023.02.28 |