해커스쿨 FTZ level10 level10 --- interesting to hack! 우선 level9 디렉토리를 보자. 기존과 다른 program 디렉터리가 있다. 무엇인가 확인해 보고 싶지만 권한이 없어 볼 수 없다. 의심을 가지고 hint 파일을 보자. 힌트를 보면 공유 메모리에 대한 개념이 잡혀 있어야 한다는 것을 알 수 있다. 공유 메모리의 개념이 어디서 나왔는지, 공유 메모리의 개념에 대해 알아보자. 공유 메모리란 프로세스 간에 공유해서 쓰는 메모리를 의미한다. 프로세스는 기본적으로 자신만의 메모리 공간만을 사용하도록 설계되어 있다. 하지만 프로그램이 커지면서 프로세스 간에 데이터를 공유해서 사용해야 할 필요성이 생기면서 여러개의 프로세스가 하나의 공유 메모리를 사용하는 상황이 생겼다. 아래의 그림을 보고 쉽게 이해해보.. Wargame/FTZ 8년 전
해커스쿨 FTZ level9 level9 --- apple 우선 level9 디렉토리의 hint 파일을 보자. 소스 코드를 아래와 같이 설명할 수 있다. 1. "It can be overflow : "라는 문자열을 출력한다. 2. buf 배열에 최대 40바이트만큼 키보드로 입력을 받는다. 3. buf2 배열의 문자열이 "go"인지 확인한다. 4. buf2 배열의 문자열이 "go"이면 "Good Skill\n"을 출력한다. 5. SUID 3010을 부여한다. 6. /bin/bash 셸을 실행한다. level9의 문제는 버퍼 오버플로우와 관련되어 있다는 것을 알 수 있다. 우선 문제를 버퍼 오버플로우를 배우기전에 기본적으로 알아야할 지식을 배운후에 분석과 공격을 시도하자. 배열이 실제 메모리에 어떻게 배치되는지를 알아보자 위와 소스코드.. Wargame/FTZ 8년 전
해커스쿨 FTZ level8 level8 --- break the world 우선 level8 디렉토리의 hint 파일을 보자. 힌트를 보면 shadow 파일에 대해서 알아야하고 용량의 크기를 "2700"이라고 주었는데 우리는 용량의 단위를 모른다. 따라서 이 두가지 사항을 알고 가자. FTZ training에서 공부해 알겠지만 /etc/passwd 파일의 패스워드 부분은 x로 채워져 있다. 초기 리눅스에서 /etc/passwd 파일의 패스워드 부분에 평문의 형태로 passwd를 기입했지만 보안성 문제로 passwd부분을 x로 표시하고 실제의 암호화된 패스워드는 /etc/shadow 파일에 저장되어 있다. /etc/shadow 파일은 root 계정만 읽을 수 있다. /etc/passwd 파일에는 계정의 사용환경과 권한에 대한 정보가.. Wargame/FTZ 8년 전
해커스쿨 FTZ level7 level7 --- come together 우선 level7 디렉토리의 hint 파일을 보자. 힌트 파일을 자세히 생각해보자. 1번에 대한 정보는 잘 모르겠다. 패스워드가 가까운곳에??? 2, 3, 4번을 합쳐서 생각하면 혹시 암호학에 관한것이 아닐까? 엄청 어려운 암호학이 아닌 진수만 바꾼 암호가 주어질 가능성이 크다는 것이다. 그렇다면 16진수의 ASCII 코드 까지 생각할 수 있다. 암호화 관련 용어만 간단히 정리해보자. 암호문 : 알아볼 수 없는 형태로 만들어진 이상한 글자. 평문 : 우리가 알아볼 수 있는 글자. 함호화 알고리즘 : 평문 -> 암호문, 암호문 -> 평문으로 바꾸어주는 함수나 라이브러리를 말한다. 위와 같은 형태로 암호화와 복호화가 이루어 진다. 암호화에 대해 간단히 알아보았으니.. Wargame/FTZ 8년 전
해커스쿨 FTZ level6 level6 --- what the hell level6 계정으로 login하면 평소와는 다른 상황이 벌어진다. 위 화면에서 Enter키를 누르면 아래와 같은 화면으로 바뀐다. Ctrl + c를 누르면 위와 같이 "Can't use ctrl+c"가 출력된다. 이러한 화면을 보고 눈치가 빠른 사람은 시스템 인터럽트와 관련이 있는 문제라는것을 느낄 수 있다. 시스템 인터럽트에 대해서 정확히 모를수도 있으니 시스템 인터럽트에 대해서 정확히 알고가자. 시스템 인터럽트는 프로세스간에 주고 받는 신호이다. 인터럽트를 유발하는 시그널 목록을 우선 보자. 여기서 자주 사용하는 시그널을 알아보자. 프로세스 종료 - 2) SIGINT -> 일반 종료 15) SIGTERM -> 일반 종료 9) SIGKILL -> 강제 종료.. Wargame/FTZ 8년 전
해커스쿨 FTZ level5 level5 --- what is your name? 우선 level5 디렉토리의 hint 파일을 보자. 힌트를 보고 눈치가 빠른 사람은 레이스 컨디션에 대한 문제라는 것을 직감할 수 있다. 레이스 컨디션(Race Condition)은 경쟁상태라는 뜻으로 경쟁 상태에서 발생하는 취약점이라는 의미이다. 그러면 경쟁 상태란 무엇일까? 경쟁 상태란 다수의 프로세스가 서로 동일한 자원을 할당 받기 위해 경쟁하는 상태이다. 위 힌트는 파일 소유의 경쟁 상태에서 발생하는 취약점이다. 레이스 컨디션(Race Condition)에 취약점이 존재하기 위한 최소한의 조건은 아래와 같다. 1. 다른 계정의 권한에 접근해 권한을 획득해야 하므로 SetUID가 걸려 있어야 한다. 2. 임시 파일을 생성해야 한다. 3. 공격자가.. Wargame/FTZ 8년 전
해커스쿨 FTZ level4 level4 --- suck my brain 우선 level4 디렉토리의 hint 파일을 보자. xinetd 이라는 데몬이 나온다. xinetd 데몬의 개념을 알아야 하므로 우선 리눅스 시스템의 부팅 순서를 알아보자. 1. 부트 로더(Grub)를 실행한다. 2. 커널 이미지를 메모리에 로딩한다. 3. /etc/inittab 파일에 있는 내용 중 선택된 모드로 init 프로세스를 실행한다. 4. xinted 데몬에 의해 네트워크 데몬이 가동된다. 5. 부팅이 완료된다. 4번에서 네트워크 데몬이 가동되는데 네트워크 데몬을 가동하는 것이 xinetd 슈퍼 데몬이다. 네트워크 데몬은 FTP, 텔넷, SSH, 아파치 등과 같은 네트어크 통신을 위한 데몬이다. xinetd 슈퍼 데몬은 부모 프로세스와 자식 프로세스.. Wargame/FTZ 8년 전
해커스쿨 FTZ level3 level3 --- can you fly? 우선 level3 디렉토리의 hint 파일을 보자. 우선 hint를 보면 dig라는 명령어가 나온다. 만일 dig를 처음 접한다면 nslookup을 생각해보자. nslookup에 대하여 알아보자. nslookup은 도메인 서버의 IP주소를 확인하는 프로그램으로, 윈도우 운영체제에도 있다. nslookup의 사용법은 크게 두가지로 나누어 진다. nslookup 의 형태가 첫번째 방법이다. 위와 같이 www.naver.com의 IP 주소가 125.209.222.142와 125.209.222.141 이라는 것은 뽑아올 수 있다. nslookup을 입력한후 IP를 알고 싶은 도메인 주소를 입력하는 형태가 두번째 방법이다. dig에 대해서 알아보자. dig는 nslook.. Wargame/FTZ 8년 전
해커스쿨 FTZ level2 level2 --- hacker or cracker 우선 level2 디렉토리에 hint 파일을 보자. 일반적으로 리눅스를 사용해 본 사용자는 대부분 VI 편집기의 편집 기능만 알고 사용할 것이다. 하지만 VI 편집기에는 다른 고급기능들이 있다. hint에서 요구 하는 것은 VI편집기의 명령어 실행 기능이다. 우선 명령어 실행 기능에 대해서 알아보자. VI편집기를 실행한 후 ":![명령어]" 형식으로 명령어를 입력하면 셸 화면으로 일시적으로 복귀하면서 입력한 명령어를 실행한다. 부가적인 기능은 위와 같이 실행한 명령어의 결과값을 VI 편집기 화면에 추가 할 수 있다. ":r![명령어]" 형식이다. VI 편집기의 고급기능에 대해 알아 보았으니 hint를 바탕으로 문제를 분석해보자. 우선 프로그램이 실행될 .. Wargame/FTZ 8년 전
해커스쿨 FTZ level1 level1 --- level1 우선 level1 디렉토리에 어떤 파일과 디렉토리가 있는지 확인해야 한다. 따라서 ll로 확인해보자. (ll은 ls -l 과 같은 뜻으로 alias가 걸려 있다.) 아래와 같이 hint라는 파일과 public_html, tmp 디렉토리가 있는 것을 확일 할 수 있다. hint라는 파일은 root를 제외한 모든 사용자에게 읽기만 허용된다. 따라서 level1인 우리도 읽을 수 있다. hint를 한 번 확인해 보자. hint를 보고 문제를 분석해 보면 level1과 level2와 관계가 있는 백도어를 찾아 level2의 권한을 얻으라는 것이다. level2 권한의 백도어는 level2 계정의 소유이고 다른 계정으로 SetUID, SetGID가 설정되어 있어야 한다. level.. Wargame/FTZ 8년 전