스택 손상이 있습니다. 기능 시스템 ()은 오류 코드로 종료 될 수 있습니다.
새로운 프로세스를위한 스택 준비 -BASH / SYSTEM () 호출 차이점
-
29-07-2022 - |
문제
스택 버퍼 오버플로를 설명하는 응용 프로그램이 있습니다. 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 () 호출의 경우 동일한 효과 (버퍼 오버플로)를 얻는 방법이 있습니까?
해결책
제휴하지 않습니다 StackOverflow