문제 설명
우선 리눅스 터미널에 문제 설명에 나와있는대로
ssh chall@[hostname] -p [port]
형태로 빈칸 채워서 입력해주었다.
난 처음에 hostname 쓰라길래 내 리눅스 이름 적는 건 줄 알았는데!!
그게 아니라 드림핵 서버 생성 시에 생기는 host 이름 적어야 된다.
그럼 이렇게 알아서 이것저것 뜬다.
yes라고 대답하고, 문제 설명에 적혀있는 password 입력하면 뭐 이렇게... 또 알아서 된다.
계정이 chall@localhost로 바뀐 걸 확인할 수 있음.
dream 유저의 권한으로 flag 확인하는 문제니까 id 명령어 이용해서 uid부터 찾았다.
무작정 id 치니까 chall 유저의 id 목록만 나옴.
dream 유저 id 찾기 위해 id dream이라고 입력했더니
dream의 uid가 2123인 거 확인.
이제 flag 파일을 읽어들였다.
ruid 입력란과 euid 입력란 이렇게 두 개가 뜨는데, 둘 다 dream의 uid를 입력했더니 안됨.
ruid, euid가 뭔지 몰라서 찾아봤다.
1. RUID(Real User ID)
이는 리눅스에서 사용자를 식별하는 데 사용하는 양의 정수로서 0부터 32767 까지 사용한다(16비트). 이 UID에 따른 읽기, 쓰기, 실행 권한 설정함으로써, 프로세스에 대해 소유자 별로 권한을 줄 수 있으며, 이 값은 변하지 않는다. 하지만 Root 권한 일 때는 수정 가능하다.
2. EUID(Effective User ID)
EUID는 SetUID 권한이 설정된 실행 파일에 의해 변경되며, 일시적으로 다른 계정의 UID를 저장해서 사용할 수 있도록 해준다. 즉 일시적으로 파일 소유자의 권한을 얻게 되는 것이다. 예를 들어 ping이나, passwd 같은 경우, 실행을 위해 Root 권한이 필요하지만, 일반 사용자 모두에게 Root권한을 줄 수 없기 때문에 해당 프로그램이 실행될 때, Root 권한이 되도록 EUID로 Root 권한을 실행되는 순간에만 준다.
https://cyber0946.tistory.com/52#google_vignette
UID, EUID, RUID
RUID와 EUID의 차이는 무엇일까? 그리고 운영체제에서 각각은 어떻게 쓰일까? 1. RUID(Real User ID) 1.1 이는 리눅스에서 사용자를 식별하는 데 사용하는 양의 정수로서 0부터 32767 까지 사용한다(16비트).
cyber0946.tistory.com
한 마디로, ruid에는 진짜 '내 uid'인 chall의 uid를 입력해야 하고,
euid는 일시적으로 다른 계정의 uid를 저장해서 사용할 수 있게 해 주는 거라서 dream 유저 권한을 빌리는 차원에서 dream의 uid를 입력해야 하는 것 같다.
이를 바탕으로 다시 시도해 봄.
문제 해결에 성공했다~
'SWUFORCE > 워게임 풀이' 카테고리의 다른 글
[Dreamhack] Broken Password (misc) (0) | 2024.08.27 |
---|---|
[Dreamhack] rev-basic-0 (reversing) (0) | 2024.08.27 |
[Dreamhack] addition-quiz (misc) (0) | 2024.08.20 |
[Dreamhack] whatsdifferent (misc) (0) | 2024.08.06 |
[Dreamhack] littlevsbig (misc) (0) | 2024.08.06 |