system 함수 인자 질문
system(command[idx]);
를 통해 system("/bin/sh");
을 수행하려고 command[idx] = "/bin/sh"
을 해주면 된다고 생각해서,
command[idx]
에 "/bin/sh"
을 입력해주었는데, 이렇게 하면 안되고 command[idx]
에는 "/bin/sh"
을 가리키는 주소가 저장되어야 한다고 되어 있었습니다.
근데 생각해보면 system("/bin/sh");
자체도 인자에 문자열 자체가 들어가는데, 왜 command[idx] = "/bin/sh";
은 안되는건가요..?
실제로 system("/bin/sh");
이 전달될 때는 "/bin/sh"
문자열이 인자로 전달되는게 아니라 해당 문자열 리터럴이 저장된 주소가 전달되나요..?
#pwnable
작성자 정보
답변
1
z3rodae0
시니어
넵 말씀하신대로 system("/bin/sh");을 호출할 때 인자로 "/bin/sh" 문자열의 주소가 전달됩니다. 그렇기때문에 command[idx]로 인자를 전달할 때도 문자열의 주소가 전달되도록 해야합니다.