Level00
https://exploit-exercises.com/nebula/level00/
먼저 위 사이트에 들어가면 About이라는 곳에 필요한 도움말이 있다. 이를 참고하여 문제를 풀면 된다.
-->set user id를 찾아라. 계정의 이름은 flag00이다.
-->로그인 level00의 패스워드는 level00이다.
about에 나온대로 로그인을 한다.
find라는 명령어는 특정 파일을 찾을 수 있다.
/는 루트부터 있는 모든 파일을 탐색하라는 시작점을 지정해 준 것이다.
-user 옵션은 파일의 사용자 계정이 누군지를 정하는 것이다. about에 나온 것 처럼 flag00로 지정했다.
Set User ID는 보통 setUID로 쓰이며 이를 사용할 경우 현재 로그인한 사용자가 관리자 권한을 획득하게 된다. 이는 권한 옵션인 perm을 사용해서 찾으면 된다. 보통 비트는 4자리로 표시된다. 첫번째는 setUID, setGID, stricky 이고 각각 4, 2, 1로 표시한다. 두번째 자리는 사용자가 가진 권한을 의한다. r, w, x를 8진수로 표현하면 된다. 세번째 자리는 그룹이 가진 권한을, 마지막 자리는 모두가 가진 권한을 의미하며 이는 사용자 권한과 마찬가지로 r, w, x의 8진수로 표현하면 된다. 일반적으로 숫자만 입력했을 경우 그 정확한 숫자의 권한을 가진 파일을 찾는 걸 의미한다. 하지만 + 또는 -를 붙이면 의미가 달라지는데 +일 경우는 써진 숫자의 권한 중 하나만 이라도 가진 파일을 모두, -일 경우는 숫자의 권한 이상으로 있는 파일을 다 찾으라는 의미이다.
2>/dev/null 은 find 명령어에 해당하는 파일이 없을 경우 출력값을 나오지 않게 해주는 명령어이다.
현재 걸어둔 옵션에 해당하는 파일이 2개가 나왔다. 하나는 /bin 디렉토리에 있고 하나는 /rofs라는 디렉토리에 있다.
먼저 bin이라는 디렉토리는 리눅스의 기본 명령어들이 모여있다.
이동한 다음 ls명령어로 flag00가 있는 지 확인했다.
flag00를 실행하니 getflag를 실행해 flag를 얻으라는 말이 나왔다.
getflag를 입력한다. 성공!!
참고:
http://hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=root&select_arrange=hit&desc=asc&no=1836
https://community.linuxmint.com/software/view/rofs
https://exploit-exercises.com/nebula/level00/
먼저 위 사이트에 들어가면 About이라는 곳에 필요한 도움말이 있다. 이를 참고하여 문제를 풀면 된다.
-->set user id를 찾아라. 계정의 이름은 flag00이다.
-->로그인 level00의 패스워드는 level00이다.
about에 나온대로 로그인을 한다.
find라는 명령어는 특정 파일을 찾을 수 있다.
/는 루트부터 있는 모든 파일을 탐색하라는 시작점을 지정해 준 것이다.
-user 옵션은 파일의 사용자 계정이 누군지를 정하는 것이다. about에 나온 것 처럼 flag00로 지정했다.
Set User ID는 보통 setUID로 쓰이며 이를 사용할 경우 현재 로그인한 사용자가 관리자 권한을 획득하게 된다. 이는 권한 옵션인 perm을 사용해서 찾으면 된다. 보통 비트는 4자리로 표시된다. 첫번째는 setUID, setGID, stricky 이고 각각 4, 2, 1로 표시한다. 두번째 자리는 사용자가 가진 권한을 의한다. r, w, x를 8진수로 표현하면 된다. 세번째 자리는 그룹이 가진 권한을, 마지막 자리는 모두가 가진 권한을 의미하며 이는 사용자 권한과 마찬가지로 r, w, x의 8진수로 표현하면 된다. 일반적으로 숫자만 입력했을 경우 그 정확한 숫자의 권한을 가진 파일을 찾는 걸 의미한다. 하지만 + 또는 -를 붙이면 의미가 달라지는데 +일 경우는 써진 숫자의 권한 중 하나만 이라도 가진 파일을 모두, -일 경우는 숫자의 권한 이상으로 있는 파일을 다 찾으라는 의미이다.
2>/dev/null 은 find 명령어에 해당하는 파일이 없을 경우 출력값을 나오지 않게 해주는 명령어이다.
현재 걸어둔 옵션에 해당하는 파일이 2개가 나왔다. 하나는 /bin 디렉토리에 있고 하나는 /rofs라는 디렉토리에 있다.
먼저 bin이라는 디렉토리는 리눅스의 기본 명령어들이 모여있다.
rofs는 시스템에서 읽고 쓰는 것이 가능한 디렉토리에 존재하는 읽기만 가능한 마운트 포인트(다른 파일 시스템이 붙어있어, 붙어있는 파일이 원본 파일 시스템의 한 부분으로 보는 파일 시스템에 있는 디렉토리이다.)를 만들수 있게 해 주는 읽기만 가능한 파일시스템이다. (Rofs is a read-only filesystem that allows you to create a read-only mountpoint of a read-write directory on your system. - 출처: https://community.linuxmint.com/software/view/rofs)
이 두개의 파일 중 어떤 곳으로 이동할 지 고민하다가 원래 명령어가 있는 디렉토리보다는 rofs라는 곳으로 이동했다.
이동한 다음 ls명령어로 flag00가 있는 지 확인했다.
flag00를 실행하니 getflag를 실행해 flag를 얻으라는 말이 나왔다.
getflag를 입력한다. 성공!!
참고:
http://hackerschool.org/HS_Boards/zboard.php?id=Free_Lectures&page=1&sn1=&divpage=1&sn=off&ss=on&sc=on&keyword=root&select_arrange=hit&desc=asc&no=1836
https://community.linuxmint.com/software/view/rofs
댓글
댓글 쓰기