728x90
hint 내용을 보자.
문제에 언급된 \usr\bin으로 이동해 level5 프로그램을 살펴보자.
이 곳에서 ls -al 명령어를 통해 본 결과, level5라는 프로그램은 level6의 권한으로 SetUID가 걸려있었다.
또한 실행해도 아무 일이 일어나지 않았다.
hint 파일에서 /tmp 디렉터리에 level5.tmp 라는 임시 파일을 생성한다고 했으니 /tmp 디렉터리로 이동해본다.
하지만 /tmp 디렉터리에도 level5.tmp 파일은 보이지 않는다.
따라서 내가 보기 전, 혹은 생성되자마자 삭제된 것으로 보인다.
이 문제를 풀기 위해서는 아래 개념이 필요하다.
- Symbolic Link: 특정 파일이나 디렉터리에 대해 참조하는 파일. 윈도우의 '바로가기'와 비슷한 기능으로, 심볼릭링크로 지정된 파일은 직접 대상 파일에 작용하는 것처럼 수행된다.
- 이 문제에서는 level5.tmp 에 대한 심볼릭 링크를 생성하여 /usr/bin/level5이 실행되었을 때 심볼릭 링크로 생성된 '바로가기' 파일에도 level5.tmp 에 대한 값을 쓰게 할 것이다. 이렇게 이후에 level5.tmp 가 삭제되어도 그 후 값을 볼 수 있게 할 것이다.
- 이 문제를 레이스 컨디션을 이용하거나 그냥 파일 덮어쓰기 기능을 활용할 수 있지만 심볼릭 링크에 대한 개념도 확인할 겸 이 방법을 택했다.
- Race Condition을 활용한 풀이법
- 파일 덮어쓰기를 활용한 풀이법
그럼 usr/bin/level5에 대한 심볼릭 링크를 생성해보자.
// 심볼릭 링크 생성: ln -s [심볼릭 링크 이름] [원본 파일 또는 디렉토리]
// 삭제: rm [심볼릭 링크 이름]
ln -s runLv5 level5.tmp
상세 정보를 확인해보면 level5.tmp -> runLv5로, 링크가 잘 걸려있는 것을 확인할 수 있다. 더불어 d나 -가 아닌 l로 표시되는 것도 확인했다.
이 상태에서는 level5.tmp가 삭제되기 전 runLv5 에 그 값이 함께 쓰일 것이다.
다시 한 번 /usr/bin/level5를 실행해보자.
그 후, /tmp로 돌아가서 runLv5의 내용을 확인해보자.
728x90
'Wargame > FTZ' 카테고리의 다른 글
hackerschool FTZ level6 (0) | 2021.02.04 |
---|---|
hackerschool FTZ level4 (0) | 2021.01.28 |
hackerschool FTZ level3 (0) | 2021.01.26 |
hackerschool FTZ level2 (0) | 2021.01.21 |
hackerschool FTZ level1 (0) | 2021.01.19 |