FTZ_level5
해킹/FTZ 1~10 2016. 1. 11. 19:03
버릇처럼 cat hint를 하면서 시작.
레이스컨디션과 관련된 문제로 보인다.
usr/bin/level5라는 파일이 실행되면서 임시파일을 생성해서 사용하는데 물론 임시파일이니 level5프로그램이 종료되면 사라질 것이다.
이게 사라지기전에 가로채서 내용을 읽으면 될것이다.
라고 생각하고 반복문을 돌려서 잠깐동안 생성된 level5.tmp파일을 읽어보려고 했으나... 안타깝게도 나중에 디버깅을 해본 결과 level5.tmp파일에는 level5가 읽을 수 있는 권한이 없다.
자 그럼 생각할 수 있는 방법은 이게 삭제되는걸 막거나 삭제되기 전에 어딘가 옮겨놓는 방법인데...
1.먼저 가장 쉬운 방법은 level5.tmp라는 파일을 먼저 만들어 놓고 level6에게 그것에 대한 쓰기권한을 주는 것이다.
level6이 level5.tmp가 있는지 먼저 체크하지 않는 취약한 프로그램이라는 가정 하에, 그렇게되면 level6은 level5가 미리 만들어놓은 level5.tmp라는 파일을 쓰기모드로 열게 되고 거기다가 비밀번호를 적어넣을 수 있다. 하지만 그리고 나서 level5.tmp를 삭제하려고 할 때 해당파일의 소유자가 level5이니 삭제할 수가 없다. 그래서 파일이 남아있게 되고 그걸 읽으면 되는 문제인것.
2.만약 /usr/bin/level5가 root권한으로 실행되는 프로그램이라고 가정하면
level5.tmp파일을 level5권한으로 만든다고 해도 root의 권한으로 삭제할 수 있다. 이 경우에는 심볼릭 링크를 사용하면 되는데
예를들어 level5_oxqo라는 파일을 만들고 /tmp폴더 밑에 level5.tmp라는 심볼릭 링크를 만들어 level5_oxqo를 가리키게 하는 것이다.
그러면 프로그램은 level5.tmp를 열어서 패스워드를 쓴 후 지우지만 그 내용은 level5_oxqo에 적히게 되고 level5.tmp를 삭제한다고 해도 level5_oxqo라는 파일에 내용이 남아있게 되는 것이다.
뭐 여기서는 level6의 권한으로 프로그램이 돌아가므로 굳이 2번의 방식을 택할 필요가 없다.
이런식으로 level5.tmp라는 빈 파일을 만들어놓고 프로그램을 돌리면 지워지지 않은 임시파일을 읽을 수 있다.
끝-
'해킹 > FTZ 1~10' 카테고리의 다른 글
FTZ_level7 (0) | 2016.01.11 |
---|---|
FTZ_level6 (0) | 2016.01.11 |
FTZ_level4 (0) | 2016.01.11 |
FTZ_level3 (0) | 2016.01.11 |
FTZ_level2 (0) | 2016.01.11 |