쉬운 방법
cd /usr/bin을 입력
ls -al level5를 통해 level5라는 파일이 있음을 알 수 있는데,
level6에게 SetUID가 걸려있다.
cd /tmp를 입력하여 /tmp 디렉토리에 들어간 후,
ls -al을 통해 파일을 확인하면,
level5.tmp파일이 생성되지 않음을 알 수 있다.
그렇다면, level5.tmp파일을 먼저 만들어 놓자.
vi level5.tmp를 해도되고,
cat > level5.tmp를 해도 된다.
어떤 내용들을 입력한후,
다시 cd /usr/bin입력하여
./level5을 실행하다.
그리고 다시 cd /tmp로 들어가면
level5.tmp에 level6의 권한으로 들어갔으니 level6의 패스워드가
써있는 임시 파일이 덤프된다.
두번째 방법
level5.tmp가 생성되고 삭제되기 바로 직전에 이 파일을 가로채려면 어떻게 해야할까요?
이 문제를 풀기 위한 방법은 여러가지가 있지만, 여기서는 심볼링 링크(symbolic link)를 이용한 해킹 방법을 알아보겠습니다. 일단 심볼링 링크로 어떻게 이문제를 풀 수 있는지 시나리오를 설명해드리겠습니다.
즉, /tmp/b라는 파일을 만들고, 심볼릭 링크를 통해 level5.tmp를 일종의 가명을 만드는 것이다
그렇게 되면, /usr/bin/level5라는 프로그램이 level5.tmp에 쓰기 연산을 수행하지만
level5.tmp는 tmp/b에 연결되어 있으므로, tmp/b에 데이터를 쓰게 되는 것이다.
cd /tmp에서
touch b를 해서 파일 생성
ln -s b level5.tmp 심볼릭 링크를 걸어준다.$ ln -s b level5.tmp
cd /usr/bin
level5실행
cd /tmp 에서 보면
cat b를 통해 level6의 권한으로 level6의 패스워드를 볼 수 있다.
what the hell