티스토리 뷰

HackerSchool FTZ WARGAME Solution

 

Start : 15.07.03

 

LEVEL5

[그림 1]

level5 의 hint 를 보면 /ur/bin/level5 를 실행하면 /tmp 에 level5.tmp 라는 파일이 생성 된다고 한다.

 

[그림 2]

 

/usr/bin/level5 를 실행 시키고 /tmp 디렉토리를 확인해 보면 hint와 다르게 파일이 생성되지 않았는데 아마 잠시 생성 됬다가 바로 삭제가 되도록 프로그래밍이 된 것 같다.

[그림 3]

[그림 4]

 

level5는 레이스 컨디션을 이용해야 하는 것 같아서 두 개의 프로그램을 코딩을 했는데 [그림 3]은 반복해서 /usr/bin/level5 를 실행하는 프로그램이고, [그림 4]는 /tmp/level5.tmp 를 반복해서 복사해오는 프로그램이다. 그런데 이렇게 프로그램을 코딩하고 실행으르 시켰으나 복사가 제대로 이루어지지 않았다. 복사하는데 시간이 걸리는데 그 사이에 삭제가 됬거나 하는 이유 때문에 복사가 안되는 것 같다.

 

 

 

[그림 5]

 

그래서 이번엔 ln을 이용해서 링크를 걸어 보았다.

[그림 6]

 

이번에는 제대로 링크가 걸리긴 했으나 파일을 열려고 하니 Permission Denied 로 인해 열리지 않았다. /usr/bin/level5 의 소유자 권한이 level6이고, setuid가 걸려있기 때문에 이 프로그램이 level5.tmp 를 생성하게 되면 그 파일 역시 권한이 level6로 걸려있기 때문에 열어 보려고 하면 권한 문제로 열리지 않는다.

 

그렇게 고민을 하다가 /usr/bin/level5 가 fopen 함수의 "w" 모드로 level5.tmp 를 생성하고, 안에 내용을 쓴다면 미리 내가 파일을 만들어 두고 그 파일에 링크가 걸려있는 다른 파일을 생성해두면 될 것 같다는 생각이 들었다.

 

[그림 7]

 

그래서 우선 /home/level5/tmp 에 빈 level5.tmp 파일을 생성하고 파일의 링크를 /tmp/level5.tmp 에 생성했다.

 

[그림 8]

 

그리고 다시 /usr/bin/level5 를 실행하고 방금 생성한 level5.tmp 를 열어보면 아까와 같은 에러 없이 잘 보이는 것을 확인할 수 있다. 내가 만든 level5.tmp 를 /usr/bin/level5 가 그대로 열어서 내용을 쓰기 때문에 가능했다.

 

다른 방법은 touch /tmp/level5.tmp 로 파일이 생성 되는 곳에 빈 파일을 생성하고, ln (-s) /tmp/level5.tmp ~/tmp/level5.tmp 를 해도 마찬가지로 잘 된다.

 

 

신고
댓글
댓글쓰기 폼