쉘 코드를 사용하기 전에 쉘 코드를 실험하므로 쉘코더 핸드북의 예제를 발견했습니다. 예는 다음과 같습니다.쉘 코드를 실행하는 동안 세그먼트 화 오류가 발생했습니다.
char shellcode[] = "\xeb\x1a\x5e\x31\xc0\x88\x46\x07\x8d\x1e\x89\x5e\x08\x89\x4
\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\xe8\xe1\xff\xff\xff\x2f\x62\x69
\x6e\x2f\x73\x68";
int main() {
int *ret;
ret = (int *)&ret + 2;
(*ret) = (int)shellcode;
}
쉘 코드는 쉘을 생성합니다. 그러나 세그먼트 오류 오류가 발생합니다. -fno-stack-protector
및 -z execstack
옵션을 사용하여 gcc
컴파일러를 사용하여 프로그램을 컴파일했습니다. 나는 readelf
명령을 간단히 살펴했다 그리고 스택 포인터
GNU_STACK 0x000000 0x00000000 0x00000000 0x00000 0x00000 RWE 0x4
역 따옴표는 코드를 인용하는 데 사용되며 강조 표시는 사용되지 않습니다. –