본문 바로가기
워게임/FTZ

FTZ - level19

by meanjung 2021. 7. 28.

hint

이전에 환경변수로 푼 것과 동일하게 풀면 된다.

다만, 쉘코드를 삽입할 때 "setreuid(geteuid(), geteuid()) 까지 포함시킨 쉘 코드" 를 찾아서 넣어야 한다.

 

 

문제 풀이는 이전 것과 같으므로 생략하고..


리눅스 Permission

$ id

사용자 정보, uid, gid, 소속 그룹 확인

$ whoami

사용자 아이디 출력. current effective user id

 

ruid

- Real User ID

- uid에 따른 읽기, 쓰기, 실행 권한을 설정함으로써 프로세스에 대해 소유자별로 권한을 줄 수 있으며

- 이 값은 변하지 않는다.

euid

- Effective User ID

- setuid 권한이 설정된 실행 파일에 의해 변경된다.

- 일시적으로 다른 계정의 uid를 저장해서 사용할 수 있도록 해준다. 즉, 일시적으로 파일 소유자의 권한을 얻게 되는 것.

- 예를 들어, ping이나 passwd같은 경우, 실행을 위해 root 권한이 필요하지만, 일반 사용자 모두에게 root권한을 줄 수 없다. 때문에 해당 프로그램이 실행될 때, root 권한이 되도록 실행되는 순간에만 euid로 root권한을 준다.

 

 

 

setreuid(geteuid(), geteuid())

int setreuid(uid_t ruid, uid_t euid)

리눅스 시스템에서는 setreuid 함수를 제공하여 ruid와 euid를 설정할 수 있다.

 

geteuid

현재 프로세스의 euid

 


setreuid(geteuid(), geteuid())가 포함된 쉘 코드로 풀어야 하는가?

1. ls -al을 통해 attackme의 소유주를 보면 level20임을 알 수 있다. 즉, euid가 level20이다.

2. 하지만 ruid는 level19이다. 

3. setreuid(geteuid(), geteuid()) 를 해줘야 ruid도 level20으로 바꾼다.

4. ruid와 euid가 같지 않으면 쉘은 euid를 ruid로 바꿔버린다. -> 만약 setreuid 코드가 없다면 쉘을 실행시켰을 때 euid도 level19로 돌아오겠징??

5. ruid와 euid가 모두 level20이면 level20 권한으로 쉘이 실행된다.

 


리눅스 권한/ permission

https://htst.tistory.com/57

 

setreuid 함수에 대해서(Real UID/Effective UID)

Effective UID, Real UID & Effective GID, Real GID ■ setreuid() 함수 # export LANG=C # man setreuid UID(User Identification)/EUID(Effective UID) GID(Group Identification)/EGID(Effective GID) Real U..

htst.tistory.com

 

'워게임 > FTZ' 카테고리의 다른 글

FTZ - level20  (0) 2021.07.28
FTZ - level18  (0) 2021.07.26
FTZ - level17  (0) 2021.07.26
FTZ - level16  (0) 2021.07.26
FTZ - level15  (0) 2021.07.24

댓글