본문 바로가기

Wargame/Exploit Exercises Nebula

Exploit Exercises Nebula Level01

https://exploit-exercises.com/nebula/level01/


level01 문제이다. 해당 링크에서 문제를 확인해보자.




문제를 확인하면 임의의 코드를 실행할 수 있는 취약점이 존재한 프로그램이 있다고 한다.


Source code를 확인해보면

특정 uid와 gid를 권한을 통해서 system함수 부분을 실행한다.


system 함수에는 /usr/bin/env를 확인한다.


즉, 환경변수에 정의된 경로에 echo라는 출력해주는 실행 파일을 실행하여 and now what?이라는 문장을 출력한다.


여기서 우리는 echo 함수를 변조하면 문제를 해결할 수 있다는 추측을 해볼 수 있다.


문제에서 ID : level01 과 PW: level01을 주었으니 

해당 ID와 PW로 로그인을 한후 /home/flag01을 이용하여 문제를 해결해보도록 하겠다.



로그인을 하면 문제에서 주어진 경로에 flag01이라는 파일이 존재한다.



환경 변수인 $PATH의 상태를 확인해보면 /usr/하위 경로들과 /sbin 그리고 /bin을 참조한다.



소스코드에 정의되었던 echo라는 실행파일은 /bin 디렉토리 안에 존재하며 

권한은 root이기 때문에 직접적인 수정을 할 수 없을 것 같다.


때문에 환경변수인 $PATH를 조작하면 된다.


$PATH를 조작하는 이유는 PATH는 Linux Program의 경로들이 위치하고 있기 때문이다.



이런 식으로 리눅스의 공유 디렉토리인 /tmp를 활용하여 

PATH의 맨앞에 /tmp를 참조하도록 설정하였다.




후에 가짜 echo 파일을 만들어 컴파일을 진행해주면 된다.



이제 /home/flag01/flag01을 실행하면 /tmp/echo를 참조하기 때문에 

id가 flag01로 획득하는 것을 확인할 수 있다.

'Wargame > Exploit Exercises Nebula' 카테고리의 다른 글

Exploit Exercises Nebula Level04  (0) 2017.04.03
Exploit Exercises Nebula Level03  (0) 2017.04.01
Exploit Exercises Nebula Level02  (0) 2017.03.31
Exploit Exercises Nebula Level00  (0) 2016.12.29