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

+ Recent posts