level8에서 얻은 ID, PW로 접속한다.

 

힌트를 읽었더니 이러한 코드가 나왔다.

buffer overflow를 이용하여 풀어야하는 문제인 것 같다.

buf2, buf 순서대로 변수가 선언되었으므로 스택에 아래처럼 저장된 것을 알 수 있다.

 buf2

 buf

buf의 메모리가 주어진 값보다 더 들어가게 될 경우 buf2의 메모리를 건드릴 수 있다.

 

메모리 할당은 8의 배수로 할당되기 때문에 아래 그림처럼 메모리가 할당된다.

   ┌-------------------    buf2   -------------------┐┌-------------------    buf   -------------------┐

 X

 X

 X

 X

 X

 X

 

 

 

 

 

 

 

 

 

 

 X

 X

 X

 X 

 X

 X

 

 

 

 

 

 

 

 

 

 

X부분은 사용하지 않는 구간이다.

 

주어진 코드를 해석하면 buf2의 첫 두자리가 go인 경우 level10의 권한으로 쉘이 실행된다.

따라서 데이터를 아래와 같이 입력한다.

   ┌-------------------    buf2   -------------------┐┌---------------------    buf   -----------------┐

 X

 X

 X

 X

 X

 X

 

 

 

 

 

 

 

 

 o

 g

 6

 5

 4

 3

 2

 1

 0

 9

 8

 7

 6

 5

 4

 3

 2

 1

즉, 앞 16자리는 아무 문자나 적어주고 그다음 두자리에 go를 적어주면 된다.

 

 

이렇게 입력한다. 그리고 my-pass를 입력해주면 패스워드를 얻을 수 있다.

 

 

'Challenge > FTZ' 카테고리의 다른 글

level8  (0) 2016.01.20
level7  (0) 2016.01.20
level6  (0) 2016.01.20
level4  (0) 2015.06.25
level3  (0) 2015.06.25

 level7에서 얻은 ID,PW로 접속한다.

 

힌트를 확인하면 shadow파일의 용량이 2700이라는 것을 알 수 있다.

find명령어를 통해 용량이 2700인 파일들을 찾아내면 된다.

하지만 용량의 단위를 모르므로 b, c, k, w를 모두 해본다.

 

 

용량이 2700c일 때  /etc/rc.d/found.txt라는 파일이 뜬다.

 

 

이 파일을 읽어보면 위와 같이 뜨게 된다.

$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps 이부분이 암호인데 MD5로 암호화 되어있다.

이를 복호화 하기위해 shadow암호를 복호화 시키는 "John the Ripper"프로그램을 설치하여 사용한다.

httpwww.openwall.comjohn

 

 

설치된 폴더 내에 run폴더 밑에 level9:$1$vkY6sSlG$6RyUXtNMEVGsfY7Xf0wps.:11040:0:99999:7:-1:-1:134549524 를 저장한 텍스트파일을 넣어준다.(이름을 txt.txt로 함)

 

cmd창을 켜서 텍스트파일이 저장되어 있는 폴더로 들어가

john --show (파일명.txt)를 입력하면

level9:apple:11040:0:99999:7:-1:-1:134549524로 복호화 된 것을 볼 수있다.

따라서 비밀번호는 apple이다.

'Challenge > FTZ' 카테고리의 다른 글

level9  (0) 2016.01.20
level7  (0) 2016.01.20
level6  (0) 2016.01.20
level4  (0) 2015.06.25
level3  (0) 2015.06.25

level6에서 얻은 ID, PW로 접속한다.

 

힌트에서 /bin/level7을 실행하라 했으므로 실행히킨다. 이때 패스워드는 가까운 곳에 있다 했으므로 level7의 비밀번호를 입력해준다.

 

 

입력하면 _-이런 문구가 뜨는데 _은 0, -는 1로 해석하면 아래처럼 나온다.

01101101 01100001 01110100 01100101

 

이 것을 10진수로 바꾸면
109  97   116    101

이다. 아스키코드로 해석을 하면

mate

라는 문자를 얻을 수 있다.

 

 

다시 /bin/level7을 실행시킨 후 mate를 입력하면 level8의 패스워드를 알 수 있다.

'Challenge > FTZ' 카테고리의 다른 글

level9  (0) 2016.01.20
level8  (0) 2016.01.20
level6  (0) 2016.01.20
level4  (0) 2015.06.25
level3  (0) 2015.06.25

 level5에서 구한 ID, PW를 가지고 접속한다.

 

접속하면 힌트가 뜨는데 이때 아무키나 누르게 되면 아래 화면이 뜹니다.

 

 

이대 접속하고 싶은 bbs를 선택한 후 기다리면 연결이 끊겨 다른 명령어를 입력할 수 없게 됩니다.

 

 

 

따라서 재접속 후 ctrl+c를 눌러 프로그램을 종료시킨 뒤 ls를 통해 파일들을 확인합니다.

 

 

password라는 파이을 읽어주면 level7의 비밀번호를 얻을 수 있습니다.

'Challenge > FTZ' 카테고리의 다른 글

level8  (0) 2016.01.20
level7  (0) 2016.01.20
level4  (0) 2015.06.25
level3  (0) 2015.06.25
level2  (0) 2015.06.25

수체계

 

10진수

- 0~9로 이루어진 수체계

 

2진수

- 0과 1로 이루어진 수체계

 

16진수

- 0~9, A~F로 이루어진 수체계

 

16진수 → 2진수

 

24D(2)

D : 13 => 1101(2)

      4 => 100(2)

      2 => 10(2) 

24D(16) = 001001001101(2)

 

 

10진수 → 16진수

 

1324

① 1324/16 = 82.xx

    1324 - (82×16) = 12 : C(16)

② 82/16 = 5.xx

    82 - (5×16) = 2

③ 5/16 = 0.xx

    5 - (0×16) = 5

1324 = 52C(16)

 

 

 

 

메모리

 

- 기본단위 : 1byte

 

주소

0

1

2

3

4

5

6

7

메모리

2A

45

B8

20

8F

CD

12

2E 

 

- 단위

  word 4byte    double word 4byte    quad word 8byte    pharagraph 16byte

 

- 문자는 문자코드를 사용하여 저장

  ASCII        하나의 문자를 인코딩하기 위해 1byte 사용

  Unicode    하나의 문자를 인코딩하기 위해 2byte(1worD) 사용(ASCII보다 더 많은 문자 맵핑 가능)

 

 

 

Segment:Offset

 

- 메모리가 Segment라고 불리는 바이트의 집합으로부터 분리

- Segment는 Offset번호를지정하여 메모리에 접근

- 데이터에 접근할 때 Segment번호:Offset번호의 리퀘스트를 보낸다

  ex)물리적 주소로 변환하기 : 1234:4321 => 1234×10h+4321 = 16661

 

레지스터

- 데이터를 저장할 수 있는 작은 영역

- 프로그램 실행 중 정보를 저장

- 레지스터 내의 저보 접근이 메모리에 접근하는 것보다 빠름

-레지스터 번호는 제한되어 있다.

 

일반적인 특성을 위한 레지스터(16비트로 구성) :

종류

구성 

용도 

AX

AH, AL

수학연산, I/O연산, INT 21

BX

BH, BL

Base 또는 Pointer

CX

CH, CL

루프 or 반복

DX

DH, DL

다양한 데이터, 문자 출력

- 386이 나온 경우 새로운 레지스터 EAX, EBX, ECX, EDX가 추가됨(32비트로 확장)

EAX

               

AH

AL

AX

 

 

 

 

세그먼트 레지스터 :

종류

용도

CS

코드를 저장하는 메모리 블록

DS

데이터를 저장하는 메모리 블록

EX

비디오 관련된 것을위해 사용

SS

루틴으로부터 리턴 어드레스 저장을 위해 프로세서에 의해서 사용되는 레지스터

 

 

인덱스 레지스터 :

종류

용도 

SI 

문자열/배열의 소스를 지정하기 위해 사용

DI 

문자열/배열의 목적지를 지정하기 위해 사용

IP

다음 명령의 주소를 저장하고 직접적으로 변경할 수 없음

 

 

 

 ID : level4 PW : level3에서 구한 패스워드 입력 후 hint를 읽는다.

 

 

 

 

 

백도어가 있는 /etc/xinetd.d로 이동한다.

이때 backdoor파일을 읽어보면 finger서비스를 실행하게 되어있다.

유저는 level5이고

서버가 /home/level4/tmp/backdoor로 설정되어 있으므로

/home/level4/tmp로 이동하여 backdoor파일이 존재하는지 확인한다.

 

하지만 /home/level4/tmp경로 내에 backdoor파일이 존재하지 않으므로

level5의 패스워드를 얻을 수 있도록 하는 backdoor파일을 만든다.

 

 

 

 

 

 

아래 코드를 작성 해준 후 gcc로 컴파일 시킨다.

 

 

 

 

 

 

 

그리고 finger @localhost명령으로 backdoor를 실행시켜주면 level5의 패스워드를 얻을 수 있다.

 

 

'Challenge > FTZ' 카테고리의 다른 글

level7  (0) 2016.01.20
level6  (0) 2016.01.20
level3  (0) 2015.06.25
level2  (0) 2015.06.25
level1  (0) 2015.06.25

 ID : level3 PW : level2에서 구한 패스워드 입력 후 hint파일을 읽는다.

 

 

 

 

 

 

 

 

find / -user level4 -perm +4000 명령을 실행한다.

 

/bin/autodig 명령을 실행하면 사용법이 뜬다.

 

 

 

 

동시에 여러 명령어를 사용하기 위해서는 ;

문자열 형태로 명령을 전달하기 위해서는 ""를 사용해야 한다.

따라서 /bin/autodig ";my-pass" 명령을 실행하면 level4의 패스워드를 얻을 수 있다.

 

 

'Challenge > FTZ' 카테고리의 다른 글

level7  (0) 2016.01.20
level6  (0) 2016.01.20
level4  (0) 2015.06.25
level2  (0) 2015.06.25
level1  (0) 2015.06.25

 ID : level2 PW : level1에서 구한 패스워드 입력 후 hint파일을 읽는다.

find / -user leve3 -perm +4000명령을 실행한다.

 

 

 

 

 

 

 /usr/bin/editor 명령을 실행한다.

 

 

 

 

 

이때 vi창이 뜨는데 텍스트파일 편집 중 명령을 실행할 때는 :!(명령)을 실행하면 된다.

 

:!my-pass 명령을 입력한다.

 

 

 

 

 

 

따라서 level3의 패스워드를 얻을 수 있다.

 

 

'Challenge > FTZ' 카테고리의 다른 글

level7  (0) 2016.01.20
level6  (0) 2016.01.20
level4  (0) 2015.06.25
level3  (0) 2015.06.25
level1  (0) 2015.06.25

 

ID : level1 PW : levevl1로 접속 후 hint파일을 읽는다.

 

 

 

 

 

 

 

find / -user level2 -perm +4000명령으로

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

 

/bin/ExecuteMe 명령어를 친다.

 

 

 

 

 

 my-pass와 chmod를 제외한 후 패스워드를 알기 위해 셸에 접근한다.

/bin/sh 명령을 실행한다.

 

 

 

 

 

 

그리고 my-pass 명령을 실해하면 level2의 패스워드를 얻게 된다.

 

 

'Challenge > FTZ' 카테고리의 다른 글

level7  (0) 2016.01.20
level6  (0) 2016.01.20
level4  (0) 2015.06.25
level3  (0) 2015.06.25
level2  (0) 2015.06.25

+ Recent posts