반응형

FTZ 11

[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] - level 3 문제

문제 내용 hint를 보면 autodig의 소스코드를 보여주고 있다. argc가 2개가 아니면 종료가 된다. => 인자를 1개 넣어줘야함 strcpy로 dig @를 cmd에 복사하고있다. strcat(A,B)함수는 문자열을 이어붙이는 함수로 A뒤에 B를 붙인다. 마지막에 system함수로 입력받은 명령어를 실행할 수 있다. 힌트를 보면 동시에 여러 명령어를 사용하기 위해 ;(세미콜론)을 사용하면 되고 문자열 형태로 명령어를 전달하기 위해서는 '(싱글 쿼터), "(더블 쿼터)를 사용하면된다. 인자에 '8.8.8.8;my-pass'을 넣어주면 dig @8.8.8.8을 실행한 후 my-pass를 실행하게 될 것이다. 일단 autodig파일의 위치를 찾아보겠다. autodig파일은 /bin디렉터리 아래에 있는 ..

[Hackerschool FTZ] - level 2 문제

문제 내용 hint 파일을 확인해보니 텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데... 이라고 한다. 텍스트 파일 편집 중 쉘의 명령을 실행시킬수 있는 텍스트 파일은 vi에서 실행시킬 수 있다. level 1번 문제처럼 setUID 권한을 가지고 있는 소유자가 level3인 파일을 찾아보았다. /usr/bin/editor이라는 파일이다. /usr/bin/editor 파일을 확인해보면 group사용자가 level2이고 소유자가 level3인것을 보아 level2에서 실행시키면 level3의 권한을 가진다. editor파일은 32비트 ELF 실행파일이므로 한번 실행해 보도록 하겠다. 실행을 하니 vi 편집기가 떴다. 아까 힌트를 보면 편집기능에서 쉘의 명령어를 실행시킬 수 있다고 하였다. vi편집..

반응형