Wargame/FTZ

    hackerschool FTZ level6

    hackerschool FTZ level6

    다른 레벨과 다르게 로그인 하자마자 힌트가 보인다. 일단 인포샵도.. bbs도.. 뭔지 모르기 때문에 검색해보자. 인포샵은 정보 공유 커뮤니티인 것 같고.. BBS는 전자 게시판을 뜻하는 것 같다. 인포샵에 대한 첫 검색 결과가 2013년인 걸 보니 내가 모를 만 하다. 어쨌든 인포샵의 bbs는 커뮤니티 게시판을 뜻하는 듯 하다. 이 '인포샵 bbs'의 텔넷 접속 메뉴에서 많이 사용되든 해킹 기법이 뭘까.. hint에서 엔터(또는 아무거나)를 누르면 아래처럼 텔넷 접속 서비스가 뜬다. 그리고 보이는 조상님들.. 1, 2, 3 모두 눌러보았는데 'Trying~'만 나타날 뿐 아무 일도 일어나지 않았다. 여기서 더 기다려봤는데 자동으로 putty가 종료됐다. 문제는 putty에 다시 접속해서, 힌트가 나오는..

    hackerschool FTZ level5

    hackerschool FTZ level5

    hint 내용을 보자. 문제에 언급된 \usr\bin으로 이동해 level5 프로그램을 살펴보자. 이 곳에서 ls -al 명령어를 통해 본 결과, level5라는 프로그램은 level6의 권한으로 SetUID가 걸려있었다. 또한 실행해도 아무 일이 일어나지 않았다. hint 파일에서 /tmp 디렉터리에 level5.tmp 라는 임시 파일을 생성한다고 했으니 /tmp 디렉터리로 이동해본다. 하지만 /tmp 디렉터리에도 level5.tmp 파일은 보이지 않는다. 따라서 내가 보기 전, 혹은 생성되자마자 삭제된 것으로 보인다. 이 문제를 풀기 위해서는 아래 개념이 필요하다. Symbolic Link: 특정 파일이나 디렉터리에 대해 참조하는 파일. 윈도우의 '바로가기'와 비슷한 기능으로, 심볼릭링크로 지정된 파..

    hackerschool FTZ level4

    hackerschool FTZ level4

    FTZ level4 입니다. cat hint: /etc/xinetd.d/에 백도어가 있다고 합니다. xinetd는 리눅스의 수퍼 데몬으로, 메모리에 상주하여 데몬 프로그램을 돌리는 standalone 방식보다 속도는 조금 느려도 자원 관리 면에서 더 효율적인 방식입니다. [리눅스] 슈퍼데몬 xinetd 정리 데몬에는 2가지 종류가 있다. 슈퍼데몬 방식(xinetd 방식), standalone 방식이 있다. standalone방식은 말 그대로 단독으로 메모리에 상주하고 있는 방식이다. 자주 사용되는 데몬이라면 문제가 없지만 �� raisonde.tistory.com cd /etc: 우선 /etc 디렉터리에 이동했습니다. cd xinetd.d ls: backdoor 파일이 보입니다. cat backdoor:..

    hackerschool FTZ level3

    hackerschool FTZ level3

    FTZ level3입니다. 먼저 ls를 통해 hint를 발견했어요. 내용을 봅시다. autodig의 소스를 안내해주고 있네요. 코드를 간단히 살펴봅시다. int main(int argc, char **argv){} main 함수에서는 인자 2개를 받습니다. 아래 모두 main 함수에 포함되는 것들입니다. char cmd[100]; cmd 라는 이름의 배열을 선언하고 if(argc!=2){ printf("Auto Digger Version 0.9\n"); printf("Usage : %s host\n", argv[0]); exit(0); } 만약 인자 값이 2개가 아니면, Auto Digger Version 0.9 Usage : [첫번째 인자, 'autodig'가 될 것] host 를 출력합니다. strc..

    hackerschool FTZ level2

    hackerschool FTZ level2

    바로 level2입니다. 역시 ls -al을 실행해 파일 목록을 확인합니다. cat hint로 문제를 봅시다. '텍스트 파일 편집 중'이라고 하는 것을 보니 vi가 쓰일 것 같습니다. 우선 level3라는 user을 가진 파일이 있는지 찾아보도록 합시다. /usr/bin/editor 가 검색되네요. find / -user level3 2> /dev/null /usr/bin 디렉터리에서 ls를 실행하면 빨간색의 editor 파일이 보입니다. editor를 실행해봅시다. 그러면 아래와 같은 편집기가 실행돼요. 그리고 vi 명령 모드에서, 쉘 명령어를 입력할 수 있다고 합니다. :sh - 쉘로 잠시 나가기 ![command] - 쉘 명령을 한줄만 하는경우 r![command] - 쉘 명령 결과를 편집내용에 추..

    hackerschool FTZ level1

    hackerschool FTZ level1

    hackerschool FTZ level1입니다 ls를 통해 hint 파일이 있는 것을 확인하고 cat으로 살펴봅시다. 권한에 setuid가 걸린 파일을 찾아보라고 합니다. setuid란 파일 실행 시에, 파일 소유자 권한으로 실행하는 것으로 보통 실행 권한을 나타내는 'x'가 아닌 's'로 되어 있느냐의 여부를 통해 확인할 수 있습니다. 권한 설정은 4000번대로 하면 됩니다. find 명령어로 찾아봅시다. find / -perm -4000 -user level2 2> /dev/null permission이 4000번대이고, user는 level2인 것을 찾는 명령어입니다. 2> /dev/null은 발생한 표준 에러를 안보이게 버리는 것을 뜻합니다. 이는 없이 실행시켜도 되지만, 그대신 에러가 엄청 뜰..

    hackerschool FTZ trainer10

    hackerschool FTZ trainer10

    trainer10(best!) 로컬 해킹의 관리자 권한을 얻기 위해서는 SetUID를 알아야 합니다. SetUID는 UserID를 변경한다는 뜻으로, 일시적으로 자신의 ID를 변경하는 것을 말합니다. 그럼 왜, 일시적으로 자신의 ID를 변경해야 하는 일이 생길까요? 내 계정에 대해 내 비밀번호는 바꿀 수 있어야 한다 -> 그런데 비밀번호는 /etc/shadow 파일에 저장되어 있다 -> 비밀번호를 바꾸면 /etc/shadow 파일도 변경될 것이다 -> 그런데 /etc/shadow 파일은 루트 계정만 변경이 가능하다. 이 때 SetUID가 사용됩니다. 내 계정에 대한 암호를 변경하는 passwd 파일에 루트 권한의 SetUID가 걸려 있어서, 일반 사용자들이 passwd 파일을 실행하는 동안에는 일시적으로..

    hackerschool FTZ trainer9

    hackerschool FTZ trainer9

    trainer9(programming) Rinux에는 4가지 종류의 사용자가 있습니다. '유저', '그룹', '아더', '루트'입니다. User: 로그인한 ID명으로, 자신을 의미합니다. Group: 모든 User는 1개 이상의 그룹에 속하게 됩니다. 임의로 Group을 변경하지 않는 한 모든 User는 자신의 Username과 같은 이름의 그룹에 속하게 됩니다. Other: User와 Group을 제외한 다른 모든 사람을 의미합니다. Root: 절대적인 권한을 가진 사용자입니다. 어떤 권한에도 구애받지 않는 상태로 파일을 제어할 수 있습니다. id 명령어를 실행하면 uid, gid, groups에 대한 정보가 나옵니다. 이 때 uid가 UserID, gid가 GroupID, groups가 해당 사용자가..

    hackerschool FTZ trainer8

    hackerschool FTZ trainer8

    trainer8 (player) 리눅스에서 일반 텍스트 파일(txt)은 cat 명령어를 사용해 내용을 출력할 수 있지만, 프로그램 소스 파일은 컴파일 과정을 거쳐 실행이 가능하도록 만든 후 사용합니다. 먼저 일반 텍스트 파일을 만들어 봅시다. 쉘 프롬포트에서 cat > 파일이름.txt 라고 입력한다. 원하는 내용을 쓰고 Ctrl + D로 종료한다. 위와 같은 방법으로 'this is test'라고 적은 test.txt 파일을 만들어보았습니다. 정상적으로 만들어졌네요. 이제 cat 명령어를 이용하여 내용을 확인할 수 있습니다. 'this is test'라는 문자열이 잘 보입니다. 지금처럼 서버에 test.txt 라는 파일이 존재할 때 다시 한 번 cat > test.txt 라고 입력하게 되면 새로운 파일로..

    hackerschool FTZ trainer7

    hackerschool FTZ trainer7

    trainer7 (to the top) *백업 = 하드에 들어있는 디렉터리, 파일, 개인 정보 등의 데이터를 똑같이 다른 곳으로 복사하여 안전하게 보관하는 것 리눅스에서 압축할 때 사용하는 명령어는 2개가 있는데, tar와 gzip이 그것입니다. 이 때 gzip은 윈도우에서 사용하는 winzip의 조상뻘되는 프로그램이라고 합니다. 1) tar tar 명령어를 통해 현재 디렉터리에 있는 파일 중 '넥스트 4집 -가사', '샵 3집 -가사', '서태지 2집 -가사', 이 3개 파일을 한 개의 파일로 만들어 봅시다. 사용법은 아래와 같습니다. tar로 압축 하기/풀기 tar 명령어 옵션 압축하기: tar cvf 압축파일명 합칠파일들 c - Create: 새로운 파일을 만드는 옵션 압축 해제하기: tar xvf..

    hackerschool FTZ trainer6

    hackerschool FTZ trainer6

    FTZ trainer6 (coffee) 패스워드 파일은 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일을 말합니다. 특정 사용자의 ID, 패스워드, 그룹, 이름 등의 정보를 저장하는 중요한 파일입니다. 이 파일을 보깅 위해 cat /etc/passwd 라는 명령어를 실행하면 아래와 같은 포맷을 가진 사용자 정보들이 나옵니다. root : x : 0 : 0 : Admin : /root : /bin/bash 각 필드는 :(세미콜론)으로 구분되어 있고 총 7개의 필드가 있습니다. 이제부터 이 각각의 필드가 무슨 뜻인지 알아봅시다. 1) root 이는 서버에 로그인할 때 사용되는 아이디인 계정을 뜻합니다. 현재 'trainer6'이라는 계정으로 로그인했기 때문에 /etc/passwd에서 현재 계정에..

    hackerschool FTZ trainer5

    hackerschool FTZ trainer5

    trainer5 (goodluck) whoami 명령어를 통해 본인이 무슨 ID로 로그온하였는지 볼 수 있습니다. 조금 더 자세한 정보를 위해 id라고 입력해봅시다. 이에 대한 분석은 trainer9에서 합니다. 이번엔 자신뿐만 아니라 이 서버를 이용하는 사용자들의 정보를 살펴봅시다. 이는 /etc/passwd 파일에 있습니다. 즉, cat /etc/passwd라고 입력하여 확인할 수 있습니다. 사진보다 훨씬 더 많은 사용자가 조회되었습니다. 가장 왼쪽의 문자열이 사용자 ID입니다. 다음으로 이 서버의 커널 버전을 확인해봅시다. 커널은 리눅스의 심장을 담당하는 파일로, 그 버전에 따라 리눅스 속도와 안정성 등 성능이 달라질 수 있습니다. (2. 2. 18 이전 버전의 커널엔 모두 취약점이 존재합니다) 이..