Information Security
[FTZ] Level 1-3 본문
Level 1
파일 내용을 확인하니 hint 파일, public_html, tmp 디렉토리가 들어 있었다.
hint 파일의 내용을 살펴보자
먼저, setuid가 걸린 파일을 찾아보자
find / -perm -4000
/에서부터 SetUID가 걸린 모든 파일을 찾아라
너무 많이 나온 관계로 다시.
다른 것과 다르게 생긴 애 발견
/bin/ExecuteMe
찾아보니 저 녀석 빼곤 오류가 난 것이고 오류를 빼고 find 하려면
find / -perm -4000 -user level2 2>/dev/null 이 명령을 쓰면 된다.
2>/dev/null
-> 여기서 2는 에러를 뜻하고 에러를 /dev/null은 휴지통이라는 뜻을 의미한다.
결국 에러를 휴지통에 넣으라는 뜻.
1>/dev/null
-> 숫자 1은 정상출력
결국 정상출력된 것들을 휴지통에 넣으라는 뜻.
한 번에 찾을 수 있었다.
/bin/ExecuteMe를 살펴보자
/bin/ExecuteMe라는 파일은
level2 유저에게 r,w,s(x) 권한이 있고
level1 그룹에게 r,x 권한이 있고
그 외의 사람들에겐 권한이 없다.
=> level1인 나에게 실행 권한이 있다.
실행해보자
bash에 들어가야 level2 쉘에 접근 가능하다.
쉘에 들어와서 my-pass로 Level2 비밀번호를 알아냈다.
Level 2
텍스트 파일 편집은 vim 사용이었던 것 같다.
level1에서 했던 것처럼 level3 권한에 SetUID가 걸린 파일을 찾아보자
/usr/bin/editor 실행해보자
vim 편집기가 떴다
i를 누르면 편집을 할 수 있고 이 상태에서 Esc를 누르면 vi 명령 모드로 바뀐다.
:!bash <- 편집 상태를 그대로 두고 bash 쉘 실행. 재 진입하려면 exit 후 엔터
level2 에서 level3로 바뀐 것을 확인할 수 있다.
my-pass을 실행해보자.
level3 비밀번호 획득 성공!
Level 3
코드를 해석해보자
먼저 cmd 문자 배열 100 존재
argc가 2가 아니면 if문 실행
strcpy(a,b) <- a에 b를 복사
strcat(a,b) <- a뒤에 b 추가 (결과적으로 ab가 된다.)
system(a) <- a 명령어 실행
결과적으로 dig @ argv[1] version.bind chaos txt , 실행
argv[1]에 우리가 실행하고 싶은 것을 써주면 된다
우리는 bash에 들어가서 my-pass를 쓰고 싶다
문자열 형태로 명령어를 전달하려면 큰 타옴표(" ")를 이용
동시에 여러 명령어를 사용하려면 세미콜론(;) 이용
level4에 권한에 SetUID가 걸린 파일을 찾아보자
autodig "bash; ""my-pass"
argv[1]에 들어가서 cmd로 복사되고 cmd가 실행될 것이다.
level 4 비밀번호 획득 성공!
'INTERLUDE > System Hacking' 카테고리의 다른 글
[FTZ] Level 8 (0) | 2021.11.04 |
---|---|
[FTZ] Level 5 -7 (0) | 2021.11.02 |
[FTZ] Level 4 - 5 (0) | 2021.10.28 |
[Training] 5-10 (0) | 2021.09.23 |
[Training] 1-4 (0) | 2021.09.16 |