|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=23996 [복사]
조금씩 보면서 진도가 나가니까 기분이 좋네요
아무튼 /tmp/level.tmp 파일을 생성하고 level5 프로그램을 실행시키니 그 안에 비밀번호가 적혀있더군요
이상하다 싶어서 검색해본 결과 레이스 컨디션을 이용해서 풀던데... 이것 아니란 말이죠
어느 블로거가 level5 프로그램을 분석했는데(몇가지 실험을 통해)
레이스 컨디션 을 이용한 해킹 기법이 생겨난 원인인 임시파일을 생성하는 프로그램이 해당 임시파일이 존재하는지 확인하고 존재하면 삭제하고 생성하는 알고리즘이라 어쩔수 없이 레이스 컨디션을 이용하는데
level5는 이러한 확인 삭제 절차가 없어서 그냥 누구나 쓰기 가능한 파일을 만들고 그 파일의 심볼릭 링크를 만들어 level5.tmp로 이름만 지어주면 되는 문제인데....
질문: 저는 심볼릭링크도 안쓰고 그냥 level5.tmp를 생성하고 프로그램만 돌렸는데 안지워 지고 남아 있었습니다.
어느 블로거는 level6의 setuid이기 때문에 삭제할 권한이 없어서 지워지지 않았다라고 하는데
1. 애초에 그렇다면 level5 권한으로 만들어진 level5.tmp에 level6 권한으로 쓰기를 할 수 없어야 하지 않습니까?
왜 비밀번호가 찍히는거죠? 참고로 level5.tmp 권한은 -rw-rw-r-- level5 level5입니다.
2. setuid는 유저만 바꾸지 그룹은 바꾸지 않으니까, 현재 level5 프로그램을 실행했을 때 uid는 level6이지만 gid는 level5이기 때문에 쓰기동작이 가능해진건가요?
... 하지만 쓰기권한이 있으면 삭제도 가능한데.... |
Hit : 5406 Date : 2012/07/03 12:56
|