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 |