[picoCTF] VNE

Monitor In Secure☃️·2024년 3월 27일

wargame_pwn

목록 보기
3/11

위의 실행을 통해 setUID(s)* 권한이 존재하는 bin 파일을 확인하였다.
'ls -al' 명령어를 통해 파일 소유자가 root라는 것도 확인할 수 있다.

*setUID: 파일이 실행되는 프로세스는 일반 사용자 계정으로 실행하는데도 불구하고 실행시간 동안 파일 소유자 권한으로 실행이 된다는 것을 의미

+)
EUID(Effective UID)
프로그램 실행이 어떤 권한으로 실행되고 있는지 현재 상태를 표현하는 명령어

RUID(Real UID)
ex. 최초 로그인 시 -> RUID == EUID
실행 순간 관리자 권한을 가졌다가 끝나면 원래 권한으로 돌아옴.
=> 일시적으로 권한상승이 진행됨 <순간적으로 EUID가 0이 됨(root의 id값인)>


첫번째 시도)

일종의 백도어 역할을 하는 c파일을 하나 작성하여 setuid 값을 0으로 만들어 flag값을 확인할 수 있도록 하려고 코드도 구상하였다.

#include <stdlib.h>
#include <unistd.h>

int main(void) {
    setuid(0);
    setgid(0);
    system("/bin/bash");
}

이런식으로 입력하고 컴파일해서 실행하려고 했으나.

위 사진과 같이 vi 편집기에도 접근하지 못하는 것을 확인했다.. 다른 방법을 생각해봐야겠다.

2번째 시도)
아까 ./bin으로 실행시켜봤을 때 SECRET_DIR 환경변수 관련 에러가 출력됐기 때문에 이를 지정해줘야할 것 같다. export 명령어를 이용해서 /root라는 값을 부여한 후 실행시켜본다.

위 사진처럼 나왔기 때문에 이제 환경변수 지정 후 이어서 cat 명령어까지 실행이 되도록 설정해보았다. (command injection 이용)

플래그값이 출력되었다!

0개의 댓글