hint : level2 권한에 setuid가 걸린 파일을 찾는다.
우선 'setuid'에 대해 알아보려했는데, '특수권한'이라는 말부터 알아야겠다.
특수 권한
권한 : u(소유자), g(그룹), o(other)
특수권한 : setuid, setgid, stickybit
setuid를 파일에 설정하면 소유자(u)의 실행권한에 x대신 s가 들어간다.
사실 권한은 [ ][ ][ ] 이렇게 3자리가 아니라 [ ][ ][ ][ ] 특수권한까지 합쳐서 4자리 이다.
r, w, x 순으로 4, 2, 1 값을 갖는 것처럼,
setuid(s), setgid(s), stickybit(t)도 각각 4, 2, 1을 갖는다.
만약, 기존 권한이 755이던 파일에 setuid를 주고싶다면,
chmod 4755 [파일] 과 같이 하면 된다.
chmod로 특수권한을 줬다고 가정했을 때,
s(setuid), s(setgid), t(stickybit) 모두 기존 파일에 실행권한 x가 있었다면 소문자 s,s,t가 들어간다.
만약 실행권한 x가 기존에 없었다면, 대문자 S,S,T가 들어간다.
setuid
setuid가 적용된 파일을 실행하면, 실행 파일이 끝날 때까지 파일 소유자의 uid가 되는 것이다.
"uid를 쓴다" == "uid가 가리키는 계정을 사용한다"
문제로 돌아와서..
setuid가 걸린 파일을 찾아야 한다.
- find / -perm -4000 : 최상위 루트 디렉토리(/)에서 권한이 4000가 있는 것을 찾겠다.
이걸 변형한다면?
find / -perm -4000 -user level2 2> /dev/null : setuid가 걸려있으면서 파일 소유주가 level2인 파일을 찾았다.
2> /dev/null은 에러가 발생했을 때 그 결과를 휴지통으로 넣어준다.
2 : 표준에러
/dev/null : 휴지통 역할
뭘 입력할거냐, 라고 뜬다! 이때 bash를 입력한다.
명령어 bash
/bin/bash를 입력하든,,, bash를 입력하든..
아무튼 입력하면 level2의 bash shell이 실행된다.
명령어 my-pass
는 ftz에서 만든 패스워트 보기다.
암튼 ftz1번 완료!
참고
https://mamu2830.blogspot.com/2019/10/setuid-setgid-sticky-bit.html
https://leeggoggal.tistory.com/10
'워게임 > FTZ' 카테고리의 다른 글
FTZ - level6 (0) | 2021.07.06 |
---|---|
FTZ - level5 (0) | 2021.07.04 |
FTZ - level4 (0) | 2021.07.04 |
FTZ - level3 (0) | 2021.07.04 |
FTZ - level2 (0) | 2021.07.03 |
댓글