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

넵 말씀하신대로 system("/bin/sh");을 호출할 때 인자로 "/bin/sh" 문자열의 주소가 전달됩니다. 그렇기때문에 command[idx]로 인자를 전달할 때도 문자열의 주소가 전달되도록 해야합니다.

2024.08.17. 02:05
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기