Leviathan5 -> Leviathan6
Connection : leviathan5@leviathan.labs.overthewire.org -p 2223
username : leviathan5
Kali linux - Terminal ]
./leviathan5 file을 실행해 보니 /tmp/file.log를 찾을 수 없다는 문구가 출력된다.
ltrace command로 출력된 내용에서는 fopen()을 볼 수 있다.
fopen() 안에 있는 parameter를 보니, 내용을 읽기 위해 /tmp/file.log를 열어라! 라는 코드이다.
즉 ./leviathan5는 /tmp/file.log 내용을 읽는 역할을 하는 것.
그렇기 때문에 /tmp/file.log라는 이름의 파일이 있어야 하는 거다..!!
그리고 한 가지 더.
./leviathan5는 owner가 leviathan6이고 owner에게 setuid가 설정되어있기 때문에
이 파일을 실행할 때는 잠시나마 leviathan6로 권한이 바뀌게 된다.
1. leviathan6로 권한이 바꿨을 때, leviathan6가 읽을 수 있는 파일 내용을 연결해 오자.
2. 그 내용을 꼭 있어야 하는 /tmp/file.log로 연결하자.
ln command를 이용하여 /etc/leviathan_pass/leviathan6 file과 /tmp/file.log를 연결한다.
간단히 말하자면,
/tmp/file.log는 이름이 /tmp/file.log일 뿐 /etc/leviathan_pass/leviathan6을 가리키는 link역할을 한다.
다른 사이트로 바로 가기 위해 걸어두는 링크 삽입 같은 거랄까(OoO)
leviathan6의 password가 들어있는 파일을 연결하고 나서, ./leviathan5를 실행하면
/etc/leviathan_pass/leviathan6에 직접적인 접근을 하지 않고도 내용을 출력시킬 수 있게 된다.