'Wargame/FTZ'에 해당되는 글 20건

FTZ level10

Wargame/FTZ 2018. 1. 5. 14:34

hint를 보면 다음과 같이 공유메모리 내용을 읽어오라고 한다.

 

간단한 공유메모리 내용을 읽는 c소스 예제를 찾아서 그대로 붙여넣은다음 키값만 바꿔서 실행시켜줬다.

 

 

 

 

 

 

 

 

 

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

FTZ level12  (0) 2018.01.05
FTZ level11  (0) 2018.01.05
FTZ level9  (0) 2018.01.05
FTZ level8  (0) 2018.01.05
FTZ level7  (0) 2018.01.05
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level9

Wargame/FTZ 2018. 1. 5. 13:57

힌트를 보면 다음과 같다. buf에 들어가는 입력값으로 bof를 발생시켜서 buf2의 처음부분을 go로 덮으면된다.

 

 

버퍼 크기가 일단 10이기 때문에 더미노드 생각해서 10바이트부터 1바이트씩 늘려가면서 시도해주면 16바이트입력후 go를 넣었을때 인증이되고 더미노드가 6바이트였던것을 알 수있다.

 

 

 

 

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

FTZ level11  (0) 2018.01.05
FTZ level10  (0) 2018.01.05
FTZ level8  (0) 2018.01.05
FTZ level7  (0) 2018.01.05
FTZ level6  (0) 2018.01.05
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level8

Wargame/FTZ 2018. 1. 5. 13:11

힌트를 보면 다음과 같이 파일사이즈가 나오고 해당파일사이즈의 파일을 검색하면 다음과 같이 found.txt라는 파일이 나온다.

 

 

파일 내용을 확인해보면 다음과 같이 shadow 파일과 같은 내용들이 포함되어 있다. 다 같은 값들이니 john the ripper로 아무거나 돌려봤다.

 

 

 

잘나온당.

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

FTZ level10  (0) 2018.01.05
FTZ level9  (0) 2018.01.05
FTZ level7  (0) 2018.01.05
FTZ level6  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level7

Wargame/FTZ 2018. 1. 5. 12:49

힌트를 보면 다음과 같이 나온다.

 

 

패스워드를 맞추면 되는거 같은데 /bin/level7 파일을 실행해보면 wrong.txt파일이 없다고한다. 한참 뭐지하면서 삽질하다가 뭔가 이상해서 검색해보니 원래 wrong.txt파일내에 패스워드와 관련된 값이 쓰여있고 이를 출력해준다고 한다.

 

그래서 원래 내용을 찾아보니 다음과같이 출력된다고 한다.

 

올바르지 않은 패스워드 입니다.

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

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

 

요건데 2진수를 10진수로 바꾸라고한걸로보아 - _ 이 1과 0을 의미하는거 같다. 경우는 -가 1 _가 0이거나 반대인 경우인데 -를 1 _가 0이라고 생각하고 이진수를 만들어봤다.

 

 

 

요런식으로 이진수를 16진수로 변환한뒤 ascii값 찾아봤더니 위의 값이 나왔다.

 

패스워드에 쳐보니 정상적으로 인증이 됬다.

 

 

 

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

FTZ level9  (0) 2018.01.05
FTZ level8  (0) 2018.01.05
FTZ level6  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
FTZ level4  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level6

Wargame/FTZ 2018. 1. 5. 10:54

들어가보면 다음과 같이 뜬다.

 

 

아무거나치면 바로 종료가 된다. 특정 실행파일이 실행되어 해당 화면이 나왔고 입력값이 들어오면 바로 연결을 끊어버도록 동작하는 파일이라고 생각했다. 그래서 해당 실행파일이 종료될수있도록 Ctrl + C를 넣어줬더니 쉘이 나왔고 패스워드파일이 있었다.

 

 

 

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

FTZ level8  (0) 2018.01.05
FTZ level7  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
FTZ level4  (0) 2018.01.04
FTZ level3  (0) 2018.01.04
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level5

Wargame/FTZ 2018. 1. 5. 10:30

힌트를 확인해보면 다음과 같은 level 권한의 실행파일이 있고 /tmp 경로에 level5.tmp라는 임시파일을 생성한다고한다.

 

 

실제로 실행 후 /tmp디렉터리를 보면 level5.tmp파일이 존재하지 않는다. gdb로 파일내용 분석을 해보려하면 권한문제로 어셈블리코드를 볼수가 없다. 대충 유추해보면 level5.tmp파일을 생성했다가 바로지우는 것 같았다. race condition을 유도하는 거라고 생각했고 c로 thread코드짜서 돌렸다.

 

 

실행 후 심볼릭 링크걸어논 파일 내용을 확인해보니 패스워드가 떳다.

 

 

 

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

FTZ level7  (0) 2018.01.05
FTZ level6  (0) 2018.01.05
FTZ level4  (0) 2018.01.04
FTZ level3  (0) 2018.01.04
FTZ level2  (0) 2018.01.03
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level4

Wargame/FTZ 2018. 1. 4. 21:07

힌트 파일을 보면 다음과 같다.

 

 

해당 디렉터리를 보면 백도어라는 파일하나가 보인다.

 

 

파일 내용을 확인해보면 finger 서비스가 등록되있다.

 

 

서비스 등록 내용을 보면 level5권한으로 /home/level4/tmp/backdoor 파일이 실행되는 것을 볼 수 있다.

 

실행되는 파일경로에서 파일을 찾아보면 아무것도 없는 것을 볼 수 있다.

 

 

c로 패스워드 출력하도록 소스짠후 컴파일해서 실행파일을 만들어놓으면 finger 서비스가 실행될때 해당 실행파일이 level5의 권한으로 실행되서 패스워드가 나올거라고 생각했다.

 

 

요런식으로 컴파일해서 finger 서비스 포트로 접속하면 패스워드가 출력된당.

 

 

 

 

 

 

 

 

 

 

 

 

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

FTZ level6  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
FTZ level3  (0) 2018.01.04
FTZ level2  (0) 2018.01.03
FTZ level1  (0) 2018.01.03
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level3

Wargame/FTZ 2018. 1. 4. 00:08

level3으로 접속 후 hint 파일을 확인해 보면 다음과 같다.

 

 

취약점은 간단하다. 바이너리에 인자로 들어가는 값이 dig 명령어의 첫번째 인자값으로 세팅되어 실행되는 코드이기 때문에 ; 를 활용해서 다중 명령어를 실행하도록 해주면 된다.

 

다음과 같이 level4 권한에 setuid 세팅된 파일을 찾은 후 실행해보면 hint파일의 코드와 동일하게 실행되는 파일이라고 추측할 수 있다. 인자로 ";my-pass;" 요런식으로 넣어주면 다중명령어가 system함수내에서 실행되면서 패스워드를 구할 수 있다.

 

 

잘나온당.

  

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

FTZ level6  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
FTZ level4  (0) 2018.01.04
FTZ level2  (0) 2018.01.03
FTZ level1  (0) 2018.01.03
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level2

Wargame/FTZ 2018. 1. 3. 23:52

level2로 접속 후 hint 파일을 확인해보면 다음과 같이 편집 중에 쉘 명령을 실행시킬 수 있다고 한다.

 

 

 

다음과 같은 명령어를 통해 우선 level3 권한이 있는 setuid가 설정된 파일을 찾았다.

 

 

 

일단 파일을 실행해보면 vi 편집기같은 편집화면이 나오는 것을 확인할 수 있었다.

 

일단 좀 더 자세한 분석을 위해 gdb로 분석을 해봤다.

 

로직은 간단하다.

setreuid 함수로 level3 권한인 3003(0xbbb)로 권한 변경 후 system함수를 통해 특정 명령어를 실행한다.

이 때 실행되는 명령어를 파악하기 위해 인자값으로 들어온 8048444 메모리 주소의 값을 보면 위와 같이 /bin/vi라는 문자열이 입력되어 system함수를 통해 실행된 것을 확인할 수 있다.

 

즉 /usr/bin/editor 바이너리는 level3 권한으로 vi에디터를 실행시켜주는 로직을 가진 파일이었던 것을 알 수 있었다.

 

그렇다면 해당 바이너리 실행 시 실행된 vi에디터는 level3 권한을 가지고있기 때문에 다음과 같이 vi에디터의 명령어 실행 기능을 통해 level3권한으로 패스워드를 구할 수 있다.

 

 

잘 나온당.

 

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

FTZ level6  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
FTZ level4  (0) 2018.01.04
FTZ level3  (0) 2018.01.04
FTZ level1  (0) 2018.01.03
블로그 이미지

JeonYoungSin

메모 기록용 공간

,

FTZ level1

Wargame/FTZ 2018. 1. 3. 23:14

hint 파일 내용을 확인해보면 다음과 같이 level2 권한에 setuid가 걸린 파일을 찾으라고 한다.

 

 

 

간단하게 다음과 같은 명령어로 찾으면 된다.

 

 

실행파일하나가 검색되는데 무슨기능을 하는지 파악하기 위해 gdb로 분석을 해봤다.

먼저 Main 함수를 보면 다음과 같다.

 

 

전체적인 흐름을 간단하게 보면 다음과 같다.

1. 스택 프레임 구성 후 system 함수 실행을 통해 명령어 실행.

2. chdir 함수를 통해 디렉터리 경로 이동.

3. printf 함수를 통해 문자열 출력.

4. fgets 함수를 통해 입력값을 받음.

5. strstr함수를 통해 특정문자열을 2번 검사하여 존재하면 종료 루틴 존재하지 않으면 정상 루틴으로 이동.

6. 정상루틴으로 왔을 시 setreuid함수를 통해 level2의 권한3002(0xbba)으로 변환 후 system 함수로 명령어 실행.

 

대충 이정도 까지 파악해 놓고 실제로 실행해보면 다음과 같은 바이너리인 것을 확인할 수 있다.

 

 

프로그램을 보면 my-pass와 chmod를 strstr함수를 통해 검증했던 것을 알 수 있고 입력값 중 해당 명령어를 제외한 경우에는 정상루틴을 타면서 setreuid 함수를 통해 level2권한으로 변환 후 system함수를 통해 입력한 명령어 실행 후 종료되는 것을 확인할 수 있다.

 

그렇다면 level2권한으로 my-pass를 실행시켜야하기 때문에 쉘을 하나띄워서 level2 권한을 유지한 후 my-pass 명령어를 통해 패스워드를 구하면 된다.

 

 

잘나온당.

 

 

 

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

FTZ level6  (0) 2018.01.05
FTZ level5  (0) 2018.01.05
FTZ level4  (0) 2018.01.04
FTZ level3  (0) 2018.01.04
FTZ level2  (0) 2018.01.03
블로그 이미지

JeonYoungSin

메모 기록용 공간

,