hint 파일을 열어보니 두둥!!!!
main함수가 주어져 있다.!
가장 먼저!!
level4의 SetUID가 걸린 파일을 찾아보자!!
find / -perm -4000 -user level4 2> /dev/null
그곳 에서 나온 파일까지 실행시켜 보면
hint에서 나온 코드의 파일 /bin/autodig에 SetUID가 걸려있고
실행해 보면 코드에서도 볼 수 있듯 결과가 출력이 된다.
(Q. autodig에 대한 인수를 따로 전해주지 않았음에도 불구하고...실행이..된다..?)
아 자세히 보니
more hints가 있다.
- 동시에 여러 명령어를 사용하려면?
- 문자열 형태로 명령어를 전달하려면?
첫번째 힌트에 대한 답은
리눅스에서 여러명령어를 한 줄에 내릴 때는 ;(세미콜론)을 이용한다.
두번째 힌트에 대한 답은
자신이 전하고자 하는 명령어를 ""(큰따옴표)로 묶어 전달해야 한다.
답이 나왔다...
bin 파일 내에서 autodig를 실행시킬때 인자를 2개를 전달해 주어야 하는데
큰 따옴표로 묶지 않고
autodig yo; my-pass 입력 시
level3의 패스워드가 주어진다. 왜냐하면
구글 왈!!(구글신 ㅠㅠㅠ)
autodig 프로그램이 yo를 가지고 실행이 되고
(위의 인수를 따로 주지 않아도 실행이 되던것...이 이해가 안되서...이것도 그닥 이해는 안간다)
자동종료되어 버리고 ;를 통해 다음 명령어인
my-pass를 실행해 level3의 비밀번호가 나온 것이라고 한다.
따라서
" " 는 문자열로 묶어 인수를 함수에 전달해 주는 역할을 한다.