본문 바로가기

System Security

FTZ level10 FTZ level 10 - Question · level10 ID로 Login해서 level11의 password를 찾기 - Solve · 공유 메모리(Shared Memory)를 이용해 공격하는 문제라고 언급되어 있다. · 공유 메모리의 내용을 확인하는 Source Code를 만들어 File을 Build해야 한다. · home Directory의 권한을 확인해보면 home Directory 내에는 Level10 권한으로는 File을 만들지 못하므로 tmp Directory 내에 만들어야한다. · ipcs 명령어를 이용해 Process 자원 List를 확인한다. ※ ipcs › Process 자원 List 확인 명령어 › Process 실행에 문제가 발생할 경우 Shared Memory Segments와.. 더보기
FTZ level9 FTZ level 9 - Question · level9 ID로 Login해서 level10의 password를 찾기 - Solve · 'level9' Directory의 hint 내용을 확인해보면 Hint 두 가지를 찾을 수 있다. · 기존에 있는 File은 level 10의 권한으로 생성되어 있어 gdb로 분석할 수 없다. · Source Code 설명 ◦ 크기 10Byte의 변수(buf, buf2) 선언 ◦ fgets 함수로 buf 변수의 값을 입력받는다. ◦ strncmp를 이용해 기존의 buf2에 있는 값과 'go'를 비교해 일치하면 bash Shell을 실행한다. · gdb로 분석하기 위해 해당 Program을 분석하기 위해 위 Source Code를 gcc를 이용해 실행 File로 생성한다... 더보기
FTZ level8 FTZ level 8 - Question · level8 ID로 Login해서 level9의 password를 찾기 - Solve · 'level8' Directory의 hint 내용을 확인해보면 Hint 두 가지를 찾을 수 있다. · Hint ◦ level9의 shadow File 내용이 어딘가에 있다. ◦ level9의 shadow File의 용량은 2700이다. · find 명령어를 이용해 찾아보면 위 네 가지 File을 발견할 수 있다. · 사용된 명령어 : find / -size 2700c 2>dev/null · 찾아낸 File을 하나하나 열어보면 '/etc/rc.d/found.txt' File이 level9의 shadow File이라는 것을 알 수 있다. · 명령어로 내용을 확인해보면 위와 같.. 더보기
FTZ level7 FTZ level 7 - Question · level7 ID로 Login해서 level8의 password를 찾기 - Solve · 'level7' Directory의 hint의 내용을 확인해보면 문제에 대한 hint 4가지를 찾을 수 있다. · Hint ◦ 패스워드가 가까운 곳에 있다. ◦ 상상력을 총동원할 것 ◦ 2진수에서 10진수를 바꾸는 것 ◦ 계산기를 공학용로 바꿀 것 · 일단 '/bin/level7'을 실행해본다. ◦ 잘못된 Password를 입력하면 위와같은 문구가 출력된다. ◦ 맨 마지막 줄인 '--_--_- --____- ---_-__ --__-_-'가 Password로 추측된다. ◦ '-'를 1로, '_'를 2로 나타내고 ' '를 숫자를 구분하는 경계선으로 생각하고 2진수로 나타내본다.. 더보기
FTZ level6 FTZ level 6 - Question · level6 ID로 Login해서 level7의 password를 찾기 - Solve · 처음 ID와 Password를 입력한 후 접속하면 hint Message가 발생하며 위와 같이 출력된다. · 'Ctrl + C'를 누르면 level6의 Shell을 볼 수 있다. · 일단 위와 같이 hint Message를 발생하는 Program File을 찾아야한다. · level6 Directory에 실행 File인 'tn'과 문서 File인 'password' File을 확인할 수 있다. · Password File에 Level7의 Password가 있지만 level6의 내용을 알기위해 일단 'tn'이라는 File부터 확인해본다. · 'tn'을 실행시켜보면 처음 접속.. 더보기
FTZ level5 FTZ level 5 - Question · level5 ID로 Login해서 level6의 password를 찾기 - Solve · '/usr/bin/level5'라는 File이 실행 시 임시로 'level5.tmp'라는 File을 생성한다고 한다. · 해당 File을 실행 후 /tmp Directory를 확인해보면 'level5.tmp'라는 File이 없는 것을 확인할 수 있다. · 여기서 'level5.tmp'라는 File은 애초에 생성되지 않거나 생성된 후 삭제된다는 것을 유추할 수 있다. · 임시 File이 사용된다는 것을 확인할 수 있으므로 Race Condition 공격을 이용해야한다. · '/tmp' Directory로 이동 후 'copy'라는 임의의 File을 생성한다 · 생성 후 'ln.. 더보기
FTZ level4 FTZ level 4 - Question · level4 ID로 Login해서 level5의 password를 찾기 - Solve · level4의 사용자 Dirctory에 있는 hint File의 내용을 확인해본다. · /etc/xinetd.d에 백도어가 있다고 한다. · 해당 Directory를 확인해보면 backdoor라는 File이 있는 것을 확인할 수 있다. · File의 내용을 확인해보면 'finger' Service라는 것을 확인할 수 있으며 사용자는 level5로 설정되어 있다. · 각 Option의 내용 ◦ disable : xinetd의 제어를 받을 것인지 결정 ◦ socket_type : 사용하는 TCP/IP Socket ◦ user : Daemon의 UID ◦ server : Ser.. 더보기
FTZ level3 FTZ level 3 - Question · level3 ID로 Login해서 level4의 password를 찾기 - Solve · level3의 사용자 Directory에 있는 hint File의 내용을 확인해본다. · Source Code와 Hint 두 가지가 더 제공되어 있다. · Code의 내용 ◦ 인자 값으로 Main 함수가 한 가지(argv[1])를 받으며 인자를 입력하지 않을 시 조건문(if)으로 예외처리를 하고 있다. ◦ 인자 값은 사용자(host)이다. ◦ strcpy를 이용해 cmd라는 문자열 변수의 가장 앞에 '@'가 채워지고 이후에 strcat를 이용해 인자 값(argv[1])를 이어 붙인다. ◦ 이후 cmd라는 문자열 변수의 값을 system 명령어로 전달한다.(system(cm.. 더보기
FTZ level2 FTZ level 2 - Question · level2 ID로 Login해서 level3의 password를 찾기 - Solve · level2의 사용자 Directory에 있는 hint File의 내용을 확인해본다. · 확인 명령어는 level1과 동일하다. ※ level1 참고 · 내용을 확인해보면 '텍스트 파일 편집' 즉, Editor(VI, VIM)를 이용한다는 것을 알 수 있으며 이 또한 level1과 마찬가지로 SetUID 권한이 주어져있을 것이라고 판단할 수 있다. · level3 SetUID 권한의 File을 찾아야하기 때문에 'find' 명령어의 Option에 user, permission을 이용한다. · 찾아보면 'editor'라는 File을 찾을 수 있다. · File의 속성 및 권.. 더보기
FTZ level1 FTZ level 1 - Question · level1 ID로 Login해서 level2의 password를 찾기 - Solve · 일단 level1의 사용자 Directory에 있는 hint File의 내용을 확인해본다. · 확인 시 명령어는 head, tail, vi 셋 중 어떠한 명령어를 사용해도 무방하다. · 내용을 확인해보면 level2 SetUID 권한의 File을 찾아야 한다고 주어져있다. · level2 SetUID 권한의 File을 찾아야하기 때문에 'find' 명령어의 Option에 user, permission을 이용한다. · SetUID 권한은 4(rws)로 시작한다. · 명령어 : find / -user level2 -perm -4000 · 결과로 File 하나(/bin/Exec.. 더보기