>> Delete No. 23075 article
No. overflow에 대해서(chroot를 사용해 overflow를 방지한
경우)

등록 2001-03-07 15:23:00 By localhost     조회 2
이름 kim sangchan    

		현재 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