Write-Up 30

FTZ: Level 9

문제의 힌트를 보면 바로 소스코드를 보여준다. char형 배열을 두개 선언해주고, 40크기의 문자열을 표준 입력(키보드)로부터 입력받는다. 이때 배열은 둘 다 10바이트인데 40바이트를 입력받으니, buf에 입력을 받아도 버퍼 오버플로우를 이용하여 buf2의 값을 임의로 수정할 수 있을 것이라 생각된다. if문을 살펴보면, go와 buf2의 문자열을 앞 2글자만 비교하는데 즉 buf2에 go라는 문자열을 입력시키면 if문 안으로 진입할 수 있다. if문 안에서는 uid를 3010(level10의 권한)으로 변경시킨 상태에서 bash쉘을 띄운다. 즉, if문 안으로 들어가기만 하면 level10의 권한으로 쉘을 실행할 수 있는 것. /usr/bin/bof 파일은 디버거를 할 수 없으므로, 동일 코드를 le..

Write-Up/FTZ 2019.11.12

FTZ: Level 8

Level 8로 로그인해서 hint 파일을 열어보면 다음과 같은 힌트를 얻을 수 있다. 용량이 정확하게 2700인 파일은 많지 않을것이라 생각하고, find 명령어와 옵션을 이용해서 이 파일을 찾아보도록 하자. 다음과 같이 find / -size 2700c 2> /dev/null 명령어를 사용하면 다음 옵션들이 조합되어 실행된다 1. 루트에서부터 2. 사이즈가 2700c(= 2700바이트)인 파일을 찾는다 3. 표준 에러일 경우(2>) 4. 화면이 아닌 /dev/null 에 저장한다 결과는 다음과 같이 /etc/rc.d/found.txt라는 파일을 찾을 수 있었다. 해당 파일을 열어보면 다음과 같이 shadow 형태의 내용이 들어있는 것을 알 수 있다. shadow 파일은 /etc/passwd에서 암호화..

Write-Up/FTZ 2019.09.26

FTZ: Level 7

** wrong.txt 에러 관련 ...더보기 , FTZ 문제를 풀다 보면 level7에서 wrong.txt 파일이 존재하지 않는다는 에러를 볼 수 있다. 원래 아래와 같은 내용이 포함되어있어야 하며 직접 root 권한으로 해당 위치에 wrong.txt 파일을 작성해도 되고, 그냥 아래 내용을 참고해도 된다. 올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에... --_--_- --____- ---_-__ --__-_- level 7에 로그인하여 바로 힌트를 확인하면 다음과 같은 내용이 적혀있다. 바로 /bin/level7 명령을 실행하면 다음과 같이 패스워드를 입력하라는 문구가 뜬다. 우리는 아직 비밀번호에 대한 어떠한 정보도 없으니 아무 값이나 입력하면 비밀번호에 대한 정보가 출력된다. * 원래 ..

Write-Up/FTZ 2019.09.26

FTZ: Level6

레벨 6는 로그인하자마자 힌트가 출력된다. 그 상태에서 아무 키나 누르면 BBS 연결 메뉴로 진입하게 되는데, 이 메뉴로 진입하게 되면 어떤 키를 누르던 연결이 끊긴다. (ctrl+c는 막혀 있음) 그렇다면, 힌트가 출력되는 부분은 어떨까? ctrl+c가 막혀있지 않아 실행중이던 프로그램을 취소하고 level6의 쉘로 돌아가게 된다. level6의 홈디렉토리에는 password라는 파일이 있었는데, 이 파일은 권한이 level6로 되어있어 별다른 작업 없이 바로 파일을 열어볼 수 있다.

Write-Up/FTZ 2019.09.26

FTZ: Level 5

가장 먼저 힌트를 읽어본다. 힌트에서 명시한 파일을 ls를 통해 살펴보니 setuid가 설정되어 있었다. 파일의 소유주가 level6이니, level6에 대한 권한이 주어진 것을 알 수 있다. 위와 같이 생성될 level5.tmp 파일에 대한 심볼릭 링크를 만들어두면 usr/bin/level5 에서 level5.tmp 파일을 만들고 삭제해도, 만든 내용은 심볼릭 링크를 통해 tmp에 저장되어있을 것이다. 위와 같이 /usr/bin/level5 를 실행한 후, tmp 파일을 열어보면 다음 비밀번호가 저장되어 있는 것을 확인할 수 있다. 이 문제가 레이스 컨디션 공격 조건을 갖춰서 그 방법으로도 진행해봄 *헛짓거리 해서 조사한 레이스 컨디션 개념 ...더보기 레이스 컨디션이라는 공격은 setuid를 이용하여..

Write-Up/FTZ 2019.09.19

FTZ: level4

level4의 hint를 확인해보면 다음과 같은 힌트를 얻을 수 있다. 명시된 /etc/xinetd.d라는 것은 디렉토리로, 슈퍼 데몬이다. 네트워크 서비스에 대한 접근제어, 로그인에 대한 접근 제어 등을 한다고 한다. 들어가서 어떤 파일이 있는지 리스트를 확인해보니 다음과 같이 backdoor라는 파일을 확인할 수 있었다. 원래 슈퍼데몬 내의 finger는 다음과 같은 기본 정보를 갖고 있는다. 각각의 옵션은 다음과 같은 의미를 갖는다 service 서비스 이름 { disable : 해당 서비스의 실행 여부 socket_type: 서비스의 소켓 유형. stream은 tcp를 의미. wait: no라고 하면 서비스 요청 처리 중 다음 요청이 들어오면 처리중인 요정이 끝날 때 까지 대기하겠다는 뜻 user..

Write-Up/FTZ 2019.09.19

FTZ: Level1

FTZ 서버는 root/hackerschool로 들어갈 수 있다. Xshell, ssh, putty 등등을 이용하여 해당 서버에 접속할 수 있도록 환경구축 한 후 시작. level1은 시작인만큼 아이디와 패스워드가 주어진다. ID: level1 PW: level1 로그인하면 유저 기본 폴더로 들어가지는데, ls를 통해 확인해보면 다음과 같은 파일들이 있는 것을 확인할 수 있다. 여기서 hint 파일은 매 레벨의 진행 방향을 알려주는 제일 중요한 파일이다. level1에서 힌트 파일을 열어보면 다음과 같은 설명글이 나온다. setuid는 간단하게, 내가 a로 로그인하고 있어도 b의 setuid가 설정된 프로그램을 실행한다면 그동안에는 b의 권한으로 실행할 수 있게 하는 개념이다. 특정 유저의 setuid가..

Write-Up/FTZ 2019.09.19

FTZ: level2

hint를 확인해보면 다음과 같은 문구가 나온다. 다음 명령어를 이용하여 level3 권한의 setuid를 가진 에디터를 찾는다. 실행하게 되면 다음과 같은 에디터가 나오게 된다. vim 에디터는 편집 중 쉘을 들어갈 수 있는데, 그 명령어는 :sh, :shell 등이 있다. 해당 명령어를 입력해주면 다음과 같이 쉘을 얻은 것을 알 수 있다. my-pass 명령어를 통해 level3의 비밀번호를 알 수 있고, 이 때 vim은 현재 백그라운드에서 존재하고 있기 때문에 exit 명령어를 통해 원래 vim으로 돌아올 수 있다. :q를 통해, vim을 벗어나고 level3으로 로그인해주면 된다.

Write-Up/FTZ 2019.09.19