>> Edit article
이름
제목
패스워드
현재 overflow에 대해서 공부하고 있습니다. 공부를 하다보니 이해가 가지 않는 부분이 있어서 질문드립니다. vulnerability를 갖는 소스 파일이 다음과 같습니다. #incldue <string.h> #include <unistd.h> int main(int argc, char **argv) { char buffer[1024]; chroot("/home/ftp"); chdir("/"); if(argc > 1) strcpy(buffer, argv[1]); } 이 소스코드에서는 overflow를 시도해 성공해서 루트권한의 쉘을 얻었더라도 진 짜 루트 디렉토리에 접근하지 못하도록 하기 위해서 chroot()를 써서 루트 디렉 토리를 바꾸었습니다. 이를 overflow하기 위해서는 shellcode내에 진짜 루트 디렉토리에 접근할 수 있 도록 shellcode를 삽입해야되는데 이를 위해 다음과 같은 소스파일을 컴파일해 서 shellcode를 얻어 냅니다. main() { mkdir("sh", 0755); chroot("sh"); chroot("../../../../../../../../../../../../../../../"); } 제가 궁금한 점은 위의 소스 코드에서 mkdir("sh", 0755)와 chroot("sh")라는 부분입니다. 구지 sh라는 디렉토리를 만들고 그 디렉토리를 root디렉토리로 만든 다음 chroot()를 써서 루트 디렉토리로 이동할 필요없이 바로 chroot()를 써서 루트 로 이동하면 될 것같은데 그렇게 하지않고 위와 같이 하는 이유가 따로 있는지 궁금합니다.. 아직 초보라 많은 것이 부족합니다.. 아시는 분들의 답변 좀 부탁드립니다.. 그럼 ...
Copyleft
1999-2026 by
JSBoard Open Project
Theme Designed by
IDOO
All right reserved