2017. 5. 30. 09:15ㆍSystemHacking/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로 넘어가겠습니다.
'SystemHacking > Neblua' 카테고리의 다른 글
Exploit-exercises Nebula level06 [ John the Ripper ] (0) | 2017.05.30 |
---|---|
Exploit-exercises Nebula level05 [ SSH key , tar ] (0) | 2017.05.30 |
Exploit-exercises Nebula level04 [ Link ] (0) | 2017.05.30 |
Exploit-exercises Nebula level02 [ system()함수 ] (0) | 2017.05.30 |