문제 설명


우선 리눅스 터미널에 문제 설명에 나와있는대로

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

+ Recent posts