본문으로 바로가기

/usr/bin/level5 프로그램은 level6의 setuid가 걸려있다.

따라서 이 프로그램이 만드는 임시파일은 level6의 권한이다.

하지만 .tmp 확장자인것으로 보아 임시파일이라 파일이 생성되자마자 사라진다. ㅠㅠ


실제로 실행시키자마자 확인해도 파일이 없는것을 볼수있다.


따라서 우리는 심볼릭 링크를 이용해서 문제를 해결할수있다.

juntae라는 파일을 하나 만들어주고, level5.tmp라는 이름의 심볼릭링크를 하나 만든다.

이 심볼릭 링크는 juntae라는 파일을 참조하게 된다.


만약 level5 프로그램을 실행시키면 level5.tmp라는 프로그램이 이미 만들어둔 심볼릭 링크에 값을 쓰게 될것이다.

그 후 level5.tmp는 다시 삭제될것이다. 하지만 이미 심볼릭링크로 juntae에 값을 연결해둔 상태일것이다.


따라서, juntae 안에 무슨 값이 있나 확인해보았더니 패스워드가 써져있음을 알수있다.


next password : what the hell





*문제에 대한 애기

사실 이 문제는 race condition 기법을 사용해서 문제를 풀으라고 출제자가 의도한것같다.

근데 구글링해서 여러 writeup들을 살펴보면, 심볼링 링크를 이용하거나 그냥 level5.tmp라는 파일을 만들어서 값을 덮어씌운 모습이다.

그래서 이 문제의 의도가 내가 생각한것이 맞을지 궁금하다.


'System Hacking ( pwnable ) > hackerschool FTZ Write-up' 카테고리의 다른 글

[FTZ] level7 ( write - up )  (0) 2019.05.21
[FTZ] level6 ( write - up )  (0) 2019.05.21
[FTZ] level4 ( write - up )  (0) 2019.05.20
[FTZ] level3 ( write - up )  (0) 2019.05.20
[FTZ] level2 ( write - up )  (0) 2019.05.20