2017-05-16 14 views
0

쉘 코더 핸드북을 읽고 있습니다. 나는 따라하고 있으며 어떤 이유로 쉘 코드를 실행할 수 없다. 으로 프로그램을 컴파일했습니다. gcc -mpreferred-stack-boundary = 2 -m32 -z execstack -fno-stack-protector -no-pie버퍼 오버 플로우가 작동하지 않습니다 (쉘 코더 핸드북)

이해가 안됩니다 ... 저는 EIP를 제어합니다. GDB의 스택을 살펴 봤는데, 나는 NOP 썰매로 뛰어 들고 있지만 아직 아무것도 ... 나는 그것이 작동하지 않는 이유를 모르겠다. 나는 독자적으로 시도해 보았고 나는 책에서 축 어적 인 코드를 시도해 보았다. 둘 다 작동하지 않는다. 내 dmesg 명령을 보여주고있다 :

제어 EIP : segfault의 IP 00000000ffffd332 SP 00000000ffffd300 오류 나 '6

0 : segfault의 IP 0000000042424242 SP 00000000ffffd330 오류 14

NOP 썰매로 리디렉션을 시도 후 42,424,242에 나는 kali를 실행하지만 우분투에서도 시도했습니다./proc/sys/kernel에서 ASLR을 비활성화했습니다. 가상 컴퓨터에서이 작업을 시도하고 있으므로 정확히 무엇이 진행되고 있는지 확실하지 않습니다.

나는 무슨 일이 일어나기까지 계속 전진하고 싶지 않으므로 도움이된다고 생각합니다.

+0

나는이 같은 문제를 겪고 있으며, 왜 이런지 알 수없는 것 같습니다. 점프 할 ip는'/ proc//maps' (스택)에서 가져 왔습니다. – Arin

답변

0

쉘 코드는 64 비트 프로그램에서 32 비트 시스템 용으로 컴파일됩니다 (-m32 플래그). 컴파일 할 때 -m32를 제거하십시오.

+0

나는 32 비트 리눅스에서도 똑같은 문제를 시도했다. –

+0

정말 확실합니까? 프로그램 및 쉘 코드와 같은 추가 정보를 게시 할 수 있습니까? –

+0

나는 친구에게 착취 석사 학위를 가진 사람에게 물었다. 왜 리눅스 커널이 리눅스에서 더 새로운 커널과 관련이 있을지 모르겠다. 나는 로프 착취로 옮겼다. 그리고 잘 작동하고있다. –