반응형

hackerschool 문제 13

[Hackerschool FTZ] - level 11 문제

문제 내용 힌트 파일을 확인해보니 코드가 들어가있다. 코드를 해석해 보겠다. 힌트 코드 #include #include int main( int argc, char *argv[] ) { char str[256]; setreuid( 3092, 3092 ); strcpy( str, argv[1] ); printf( str ); } str배열이 256바이트만큼 선언되었고 setreuid로 3092로 Real User ID(실제 사용자), Effective User ID(유효 사용자)를 설정해주었다. strcpy로 str에 argv[1]을 복사한다. 그리고 str을 출력한다. 여기서 strcpy는 길이를 검증하지 않기때문에 길이보다 많은 데이터 값을 입력하면 버퍼를 넘어서 다른 메모리영역까지 침범할 수 있다. ..

[Hackerschool FTZ] - level 10 문제

문제 내용 힌트 내용을 보면 두명이 비밀스러운 대화를 나누는데 공유메모리를 이용하였고 key_t 값이 7530이라고한다. 두사람의 대화를 도청하여 level11의 권한을 얻으라고함!! 프로세스간의 데이터가 공유되어야할때 ipc가 이를 가능하게 한다. ipcs 명령어를 통해 IPC를 위한 자원들의 리스트를 출력하였다. key 값이 0x1d6a이다. 10진수로 변환하면 힌트에서 나온 7530이 된다. 바이트값은 1028이고 권한은 666 owner은 root이다. 바로 코드를 짜보겠다. https://reakwon.tistory.com/96 [리눅스] 공유메모리 (Shared Memory) 개념과 예제(shmget, shmat, shmdt, shmctl) 공유메모리(Shared Memory) 프로세스에서 메..

[Hackerschool FTZ] - level 9 문제

문제 내용 /usr/bin/bof의 소스코드를 출력하고 있다. 소스코드 #include #include #include main(){ char buf2[10]; char buf[10]; printf("It can be overflow : "); fgets(buf,40,stdin); if ( strncmp(buf2, "go", 2) == 0 ) { printf("Good Skill!\n"); setreuid( 3010, 3010 ); system("/bin/bash"); } } 해당 소스코드를 해석하면 버퍼 2개가 선언되어 있고 fgets로 buf에 40바이트만큼 입력창에서 입력을 받고 있다. 그리고 buf2에 저장된 2바이트가 go문자랑 같으면 0을 리턴하므로 참이되어 Real User ID, Effec..

[Hackerschool FTZ] - level 8 문제

문제 내용 힌트 파일을 읽어보면 level9의 shadow 파일이 어딘가에 숨어있다고 하고 알려진것은 파일의 용량이 2700이라는 것이라고 한다. find 명령어로 파일의 크기를 통해 한번 찾아보겠다. 사용명령어 : find / -size 2700c -ls 2>/dev/null find 명령어로 용량이 2700byte인 파일을 찾았다. 2번째 /etc/rc.d/found.txt 파일이 뭔가 수상하다. 한번 읽어보겠다. 해당 파일을 읽으니 level9의 shadow 파일의 내용을 출력하는것을 그림 9에서 볼 수 있다. 사용자 명은 level9이고 $1로 되어있으니 md5로 해시가 되었음을 알 수 있고 그다음 솔트값 그다음 해시함수와 솔트값을 이용하여 해시한 결과값인것을 알 수 있다. 칼리리눅스에 john ..

[Hackerschool FTZ] - level 7 문제

문제 내용 /bin/level7 명령을 실행하면 패스워드 입력을 요청한다라고 나와있고 1~4까지 힌트가 있는것같다. /bin/level7 을 실행하니 패스워드 입력창이 나와서 아무 값이나 넣었더니 무슨 부호가 나온다. 부호 : --_--_- --____- ---_-__ --__-_- 2진수를 10진수로 바꿀수 있냐는 힌트에 1과 0으로 치환을 하면될것같다고 생각이 들었다.치환을 하면 1101101 1100001 1110100 1100101이 나온다.16진수로 표현을 하면 6D 61 74 65 가 된다.아스키 코트로 문자로 변환하면 m a t e가 나오므로 패스워드는 mate임을 유추할 수 있다. 패스워드는 mate를 입력하였더니 다음 레벨의 password가 나왔다. level8 password brea..

[Hackerschool FTZ] - level 6 문제

문제 내용 힌트에 인포샵 bbs의 텔넷 접속 메뉴에서 많이 사용되던 해킹기법이라고 나오고있다. 일단 enter를 눌러본다. 접속하고 싶은 bbs를 선택하라고 창이 뜬다. 1번을 한번 눌러보겠다. 입력을하니 아무것도 일어나지 않는다. 뭐지 싶어서 아까 힌트의 내용을 검색해 보았다. 인포샵 bbs란 인포샵 bbs는 옛날에 이용되던 사설 전자게시판이라고 한다. 사용자에게 주소를 입력받고 ping테스트 후 주소가 활성화 되어있으면 해당 주소에 연결해준다. 인포샵 bbs는 초기 접속화면에서 컨트롤+c를 누르면 바로 쉘이 떨어진다는 취약점을 가지고있다. 이를 바탕으로 초기 접속화면에서 컨트롤+c를 눌러서 쉘을 획득해보도록 하겠다. 초기 접속화면에서 컨트롤+c를 눌렀더니 쉘에 접근하였고 password파일을 읽어보니..

[Hackerschool FTZ] - level 5 문제

문제 내용 힌트를 보면 /usr/bin/level5 프로그램을 실행하면 /tmp 디렉토리에 level5.tmp라는 임시 파일을 생성한다고 한다. /usr/bin/level5를 실행하고 /tmp 디렉토리를 확인 해 보겠다. 명령어를 실행하였지만 level5.tmp가 생성되지 않았다. 하지만 생성된것이 아니라 빨리 삭제가 된것이여서 보이지 않는 것이다. 이것은 레이스 컨디션 공격을 통해 문제를 해결할 수 있다. 레이스 컨디션 공격을 위한 조건은 아래와 같다. 1. SUID가 걸려있어야 한다. 2. 임시파일을 생성해야 한다. 3. 임시로 생성되는 파일의 이름을 알아야 한다. /usr/bin/level5를 실행하면 /tmp/level5.tmp 파일이 생성된다. setUID가 걸려있고 임시파일을 생성하고 생성되는..

[Hackerschool FTZ] - level 4 문제

문제 내용 힌트를 보면 누가 /etc/xinetd.d/ 디렉토리에 백도어를 심어놓았다고 한다. 해당 디렉터리로 이동하겠다. 백도어 파일을 확인하였다. finger라는 서비스를 이용한다. finger 는 로컬사용자 또는 원격서버사용자의 계정정보를 확인하는 명령어이다. 찾아보니 level5의 권한으로 /home/level4/tmp/backdoor를 실행한다고 한다. 따라서 우리는 /home/level4/tmp/backdoor 파일을 만들어야한다. backdoor.c 파일 #include #include int main(void){ system("my-pass"); return 0; } my-pass 명령어를 실행하는 백도어 코드이다. gcc로 컴파일을 한후 finger @loacalhost를 이용하여 lev..

[Hackerschool FTZ] - trainer1

Trainer1 아이디 : trainer1, 비밀번호 : trainer1 LS, Ls, lS등 대소문자를 구분하므로 소문자로 ls입력해야지 알아먹음 퀴즈 파일의 속성을 보면 d로시작하므로 디렉토리이다. 답은 2이다. 이것또한 디렉토리이므로 답은 2이다. 이것은 - 로 되어있으므로 파일이다. 답은 1이다. d로 시작하므로 디렉토리이다. 답은 2이다. 파일의 용량은 3861이다. 이 부분이 파이르이 용량부분이다. 다 맞았다. 100점이라 리눅서의 기질이 보인다고한다. trainer2 비밀번호 : linuxer

반응형