본문 바로가기

시스템 해킹 (Pwnable)

(10)
[해커스쿨 FTZ] 해커스쿨 FTZ Level 9 풀이 이번에는 해커스쿨 FTZ의 Level 9를 풀어보겠습니다. 힌트를 보니 /usr/bin/bof의 소스 코드를 보여줍니다. 버퍼 오버플로우를 이용하는 문제 같습니다. fgets() 함수로 buf 배열에 크기가 최대 40만큼 넣어주므로, 크기가 10인 buf 배열을 다 채우고 buf2 배열에 overflow가 되도록 입력해주면 됩니다. 입력을 0000000000go 로 넣어보겠습니다. 그래도 문제가 풀리지 않습니다. buf 배열과 buf2 배열 사이에 어떠한 dump가 존재하는 것 같습니다. 0의 개수를 하나씩 늘려가면서 입력해보면, Good Skill이라는 문자열과 함께 level10의 권한을 얻을 수 있습니다. level 10의 권한으로 my-pass 명령어로 password를 구할 수 있습니다.
[해커스쿨 FTZ] 해커스쿨 FTZ Level 8 풀이 이번에는 해커스쿨 FTZ의 Level 8을 풀어보겠습니다. 먼저 힌트를 보겠습니다. 용량이 2700인 파일을 찾는 문제같습니다. 리눅스의 find 명령어를 사용하면 될 것 같습니다. 구글에서 find 명령어 사용법을 찾아보시면 됩니다. find 명령어로 용량으로 검색하려면 "find [디렉토리] -size [용량][단위]" 형식으로 작성하면 됩니다. "find / -size 2700c 2>/dev/null"은 "루트 디렉토리부터 용량이 2700이고 단위가 byte이고 오류가 나타나지 않는 파일을 찾아라" 입니다. found.txt가 수상해 보이니 cat 명령어로 텍스트 파일을 출력해보겠습니다. 이상한 문자열들이 쭉 나열되어 있습니다. 구글 검색을 해보니 'john the ripper'라는 패스워드 크랙 ..
[해커스쿨 FTZ] 해커스쿨 FTZ Level 7 풀이 이번에는 해커스쿨 FTZ의 Level 7을 풀어보겠습니다. hint를 먼저 보니, 특정 패스워드를 입력하는 문제 같습니다. wrong.txt를 찾을 수 없다길래 wrong.txt를 생성하려고 했는데 접근 권한이 설정되지 않았습니다. 검색을 해보니 개인이 FTZ 서버를 이용할 때는 서버에 root 계정으로 들어간 뒤 /bin 디렉토리에 wrong.txt를 생성해주어야 합니다. root 계정으로 wrong.txt를 만들어 주었습니다. root 계정의 password는 hackerschool입니다. 패스워드는 가까운 곳에 있다고 하여 7을 입력했는데 아무 일도 일어나지 않습니다. 이것도 개인이 FTZ 서버를 이용할 때 발생하는 오류라고 합니다. 원래라면 --_--_- --____- ---_-__ --__-_-..
[해커스쿨 FTZ] 해커스쿨 FTZ Level 6 풀이 이번에는 해커스쿨 FTZ의 Level 6를 풀어보겠습니다. 접속하면 hint가 출력되고 엔터를 치면 위와 같은 화면이 나옵니다. 어떤 숫자를 입력하더라도 trying.. 문자열만 출력되고 변화가 없습니다. 그냥 이것저것 만져보다가 위와 같이 hint가 출력된 창에서 ctrl+c를 눌러보았더니 프롬프트로 이동되었습니다. password 파일이 있길래 출력해보니 password가 출력되었습니다.(?)
[해커스쿨 FTZ] 해커스쿨 FTZ Level 5 풀이 이번에는 해커스쿨 FTZ의 Level 5를 풀어보겠습니다. 파일을 찾았습니다. 힌트를 먼저 보고 가겠습니다. 임시파일을 이용하라고 합니다. 하지만 level5 프로그램을 실행하고 tmp 디렉토리를 봐도 임시파일이 존재하지 않았습니다. 임시 파일이 바로 삭제될 수도 있으므로 level5.tmp를 하나 만들어주겠습니다. touch 명령어로 level5.tmp 파일을 만들어 주고 level5 프로그램을 실행하니 password를 확인할 수 있습니다.
[해커스쿨 FTZ] 해커스쿨 FTZ Level 4 풀이 이번에는 해커스쿨 FTZ의 level 4를 풀어보겠습니다. find 명령어를 사용하여도 파일이 출력되지 않아 hint를 보겠습니다. /etc/xinetd.d에 백도어가 있다고 합니다. xinetd.d는 디렉토리이므로 xinetd.d로 이동해보겠습니다. ls 명령어를 사용해보니 backdoor 파일이 있습니다. backdoor이 실행되지는 않으니 cat 명령어로 출력해 보았습니다. 구글에 finger 서비스에 대해 검색해보니, 서비스가 실행될 때 server에 해당하는 /home/level4/tmp/backdoor 에 위치한 프로그램을 불러옵니다. 아무리 찾아도 backdoor이라는 프로그램이 없습니다. 직접 만들어야하나 봅니다. vim 에디터를 이용해서 만들겠습니다. system() 함수로 my-pass..
[해커스쿨 FTZ] 해커스쿨 FTZ Level 3 풀이 이번에는 해커스쿨 FTZ의 Level 3를 풀어보겠습니다. find 명령어로 파일을 찾고 실행해봅니다. 사용법을 알려주는데 아직 이해가 되지 않습니다. 힌트를 보겠습니다. autodig의 소스 코드를 보여줍니다. system() 명령어를 활용하여 명령어를 사용하는 문제 같습니다. 코드를 보니 cmd 배열에 argv[1]을 넣어줘서 실행합니다. argc는 2가 되어야 오류가 나지 않습니다. argc와 argv에 대한 이해가 되지 않으시면 구글에 "c언어 command line arguments"로 검색해 보시길 바랍니다. more hints.를 보면 명령어를 동시에, 문자열 형태로 전달해야 합니다. /bin/bash로 접근하여, my-pass 명령어를 사용해야 하므로 동시에 사용하고, system 함수는 ..
[해커스쿨 FTZ] 해커스쿨 FTZ Level 2 풀이 이번에는 해커스쿨 FTZ의 Level 2를 풀어보겠습니다 파일을 찾았습니다. 파일을 실행하여 보겠습니다. 위와 같은 vim 에디터 창이 나옵니다. 뭘 의미하는지 잘 모르겠으므로 hint를 보겠습니다. 텍스트 에디터에서 쉘 명령을 실행할 수 있다고 합니다. 구글 검색을 해보니 vim에서는 ! (느낌표)를 이용하여 쉘 명령을 실행할 수 있다고 합니다. 느낌표를 사용해서 my-pass 명령어를 실행하였습니다. password를 얻을 수 있습니다.
[해커스쿨 FTZ] 해커스쿨 FTZ Level 1 풀이 이번에는 해커스쿨 FTZ의 Level 1을 풀어보겠습니다. 해커스쿨 FTZ 트레이닝의 Level 10 마지막 부분에 나온 find 명령어를 사용하였습니다. user가 level2인 파일들 중 SetUID가 있는 파일을 find 명령어로 찾아보았습니다. 2>/dev/null 명령어는 standard err(에러)들을 출력하지 않겠다는 의미입니다. 즉 "Permission Denied (접근 권한 없음)" 오류가 나는 파일들을 출력하지 않겠다는 의미입니다. 1>/dev/null 명령어는 standard out(출력)들을 출력하지 않겠다는 의미로 에러만을 출력합니다. >/dev/null 명령어는 standard err, standard out(에러, 출력) 모두 출력 하지 않으므로 아무것도 출력되지 않습니다...
[해커스쿨 FTZ] 해커스쿨 FTZ 트레이닝 레벨 1~10 정리 명령어 ls : 현재 위치를 기준으로 설치된 파일과 디렉토리 출력 ls -l : -l 옵션은 파일과 디렉토리를 구분하여 출력 ls -a : -a 옵션은 숨겨진 파일까지 출력 pwd : 현재 경로 출력 cd .. : 상위 디렉토리로 이동 cd s0ng : s0ng 디렉토리로 이동 cd / : 최상위 디렉토리(루트 디렉토리)로 이동 mkdir s0ng : s0ng이라는 디렉토리 생성 rmdir s0ng : s0ng이라는 디렉토리 삭제 cp s0ng hack : s0ng 파일을 hack 파일로 복사 rm s0ng : s0ng 파일을 삭제 mv s0ng hack : s0ng 파일을 hack 파일로 복사하고 s0ng 파일 삭제 w : 서버에 접속중인 사람 확인 finger -l : 사용자들의 자세한 정보 출력 t..