문제

스택 버퍼 오버플로를 설명하는 응용 프로그램이 있습니다. LIBC로의 복귀 공격을 유발하고 싶습니다.

버퍼 오버 플로우는 다음을 기반으로합니다.

int main(int argc, char **argv)
{
[...]
char buff[16];
strcpy(buff,argv[1]);
[...]
}

이 응용 프로그램을 쉘에서 직접 호출하면 예상 오류가 발생합니다. 스택은 손상되었습니다.

[syssec@syssecvm bufov1]$ ./vulnapp hhgfhdsgfsagfzutuewzrqwgfshgafsd
Segmentation fault

그러나 다른 앱 (Executor.c)에서 인수를 준비하고 System () 호출을 통해 Vulnapp 호출을 할 때 아무 일도 일어나지 않습니다. vulnapp은 모든 lenght의 주장을 받아들입니다.

./executor
You executed:./vulnapp 01234567890123450123BBBB�%�/bin/ged�������/
[syssec@syssecvm bufov1]$ 

이 경우 스택 손상이 없습니다.

왜 그런가요?

System () 호출의 경우 동일한 효과 (버퍼 오버플로)를 얻는 방법이 있습니까?

도움이 되었습니까?

해결책

스택 손상이 있습니다. 기능 시스템 ()은 오류 코드로 종료 될 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top