Training이 끝나고 드디어 Hacking Zone에 왔다.
Hacking Zone Level 1에 로그인을 해야 한다.
보는 것과 같이 로그인하면 아무것도 나오지 않는다.
뭔가 Training과 같이 뭐라도 나올 것 같았지만, 아무것도 나오지 않아서 당황했다.
무슨 파일이 있는지부터 알아야 할 것 같아서 생각 없이 ls -l을 입력했다.
ls -l을 실행해보니 hint라는 파일이 나왔다. level 1의 hint라는 생각에 cat hint를 사용해 내용을 봤다.
level 1은 level 2 권한에 SetUID가 걸린 파일을 찾는 문제였다.
SetUID는 얼마 전 Training 10에서 배웠던 권한에 대한 것이다.
Training 10에서 배운 find를 활용해 찾으려고 했다. find에 대한 설명은 Training 10, 생활코딩에서 볼 수 있다.
level 2 권한에 SetUID가 걸린 것이니 user는 level 2가 되기 때문에 find 옵션을 -user level 2로 쓴다.
SetUID를 찾는 옵션은 -perm -4000였다.
위와 같이 find를 입력해보니 Permission denied이란 오류 메시지가 너무 많은 곳에서 나온다.
많은 오류 메시지를 지우고 필요한 것만 찾아서 보고 싶어서 구글링을 해봤다.
리눅스 find 오류 제외를 검색했다.
검색 결과 생활코딩 리눅스에서 배웠던 stderr를 사용해 리다이렉션을 하는 것이었다.
stderr(2)를 '>' 리다이렉션 하는데 /dev/null에 리다이렉션 하는 것이다. 여기서 /dev/null은 휴지통 같은 기능을 한다.
실행하면 오류는 휴지통으로 가고 필요한 것만 보인다. /bin/ExecuteMe가 찾고 있던 level 2 권한에 SetUID가 걸린 것이다. 더 정확하게 확인하기 위해 bin 폴더로 이동해서 찾아봤다.
정확하게 찾아보니 level 2 유저의 권한에 SetUID인 S가 걸려있고 level 1 그룹은 읽고(r), 실행(x)할 수 있다.
딱 보아도 실행을 해야 하게 생겼다.
./ExecuteMe로 실행한다. 이것도 Training에서 배웠던 간단하게 실행하는 방법이다.
실행 결과 level 2의 권한으로 한 가지만 실행시켜준다고 한다.
my-pass를 하면 그 단계의 비밀번호가 나오는 명령어인데 막아 둬서 고민을 많이 했다.
결론은 더보기에 나와 있다.
level 2의 권한으로 bash를 실행시키는 것이다.
정답이 아닌 다른 것을 쓰게 되면 정보와 함께 다시 level 1의 유저, 권한으로 돌아오게 된다.
그렇다면 level 2의 권한을 얻어야 한다는 소리다.
bash를 실행시키면 level 2의 권한을 얻어온다.
bash를 실행시키면 level 1의 유저, 권한으로 돌아가지 않고 level 2의 권한을 얻게 된다.
자세히는 /bin/bash를 실행해야 하지만 여기서는 bash만 입력해도 실행된다.
여기서 my-pass를 입력하면 level 2의 비밀번호를 알 수 있고 level 1을 풀었다고 할 수 있다.
'System Hacking > 해커스쿨 F.T.Z Hacking Zone' 카테고리의 다른 글
해커스쿨 F.T.Z Level 6 (0) | 2020.02.13 |
---|---|
해커스쿨 F.T.Z Level 5 (0) | 2020.02.11 |
해커스쿨 F.T.Z Level 4 (0) | 2020.02.07 |
해커스쿨 F.T.Z Level 3 (0) | 2020.02.06 |
해커스쿨 F.T.Z Level 2 (0) | 2020.02.05 |
댓글