Exploit-exercises Nebula level01 [ 환경변수 ]

2017. 5. 30. 09:15SystemHacking/Neblua


 


 

Nebula level01번 문제입니다


< 그림 1.1 >


/home/flag01/flag01 실행파일을 실행한 결과입니다


< 그림 1.2 >


"echo" 명령어의 결과와 같습니다. 원래 명령어는 $echo 만 쓰는거 아닌가? 라고 하실 수 있습니다.

하지만 리눅스에서 명령어의 동작원리는 환경변수에 PATH 에 저장된 경로에서 " echo " 라는 명령어에 대한 정보가 있는 파일을 검색한 후 존재하면 그 파일을 실행시켜주는 원리입니다

환경변수 PATH란 무엇인가? ㅡ 그림 1.3 을 보시죠


< 그림 1.3 >


명령어 " env " 는 환경변수의 리스트를 출력해주는 역할을 합니다

환경변수중에서 PATH 가 보입니다. " : " 를 경계로 각 디렉토리에서 입력된 명령어들을 검색합니다

그러면 echo라는 파일을 하나 만들고 경로를 조작하면 우리가 원하는 echo명령어를 만들어서 실행할 수 있습니다

먼저 " /tmp " 경로에 echo파일을 하나 생성해보겠습니다

 

< 그림 1.4 >


그리고 해당 파일을 컴파일 시킨 후 환경변수 PATH를 조작해보겠습니다

참고로 " $PATH " 명령어는 환경변수PATH에 저장되어있는 값을 가져옵니다


< 그림 1.5 >


PATH환경변수의 첫부분에 /tmp/ 경로가 추가되어있음을 확인 할 수 있습니다

/home/flag01/flag01 파일을 실행하면 제일처음 /tmp/경로의 echo파일을 찾아서 실행시킵니다. 따라서 flag01의 쉘이 실행됩니다

level02로 넘어가겠습니다.