나는 exploit-exercises.com "protostar"배포판에서 일해 왔습니다. 현재 stackack5에서 작동하는 이상한 오류가 발생하면서 현재 당황하고 있습니다.GDB에서 프로그램을 다른 값으로 종료시키는 데 영향을 줍니까?
셸 코드의 시작 부분에 '\ xcc'(SIGTRAP) opcode를 사용하고 GDB에서 테스트 했으므로 (이제는 제거 했음) 컨트롤을 내 셸 코드로 성공적으로 전송했음을 확인했습니다.
는 가능한 한 간단하게하기 위해, 내 쉘 코드의 목표는 내가 GDB에서 실행하면 1
의 상태로 종료 할 수있는 프로그램을 얻을 것입니다, 그것은 성공적으로 악용 트리거와와 종료 1의 코드. Yay!
... 내가 GDB를 종료하고 쉘에서 실행하려고 할 때
그러나 어떤 이유로
는, 그것은 나에게 (132)의 코드를 가진 '잘못된 명령어'중단 및 종료를 제공합니다 내가 사용
쉘 코드는 다음과 같습니다 그들은 0x80으로 시스템 호출에 대한 적절한 값인지 확인하기 위해 시작 부분에 %의 EAX와 % EBX을 제로의 사소한 조정과 http://repo.shell-storm.org/shellcode/files/shellcode-470.php . 내 파일을 악용 만드는 데 사용하고
명령은 다음과 같습니다
perl -e 'print "A"x76 . "\x3a\xfd\xff\xbf" . "\x90"x20 . "\x33\xdb\x33\xc0\x40\x43\xcd\x80"' > stack5_exploit
사람이 왜 다른 출력 초래 GDB 내에서 그것을 실행하는 등의 아이디어가 있습니까?
0x80 인터럽트가 처리되는 방식과 관련이있을 것이라고 생각하지만 Linux보다 Windows 내부에 대한 경험이 훨씬 큽니다.
vm에 이미 aslr이 비활성화되어 있습니다. 그래도 setarch 팁을 주셔서 감사합니다! –