스택에서 코드를 실행하여 버퍼 오버플로를 수행해야한다는 지시가 있습니다. 나는 그렇게하려고 노력해 왔지만 스택의 "ret"위치를 코드가 상주 할 스택 위치로 바꿀 때마다 seg 오류가 발생합니다. "ret"위치를 실제 .o 파일 (실제 어셈블리 코드와 같은)에있는 주소로 바꾼다면 정상적으로 작동합니다. 스택의 위치로 돌아갈 수 없습니까? 스택 주소로 돌아갈 수 없다면 자신의 어셈블리 코드로 버퍼 오버 플로우를 수행하는 방법이 혼란 스럽습니다 ... (btw, IA32 little endian 컴퓨터를 사용하고 있습니다).버퍼 오버플로 공격 - 스택의 주소로 돌아 가기?
내 단계 :
- 넘침
- 는
- 은 위의 "RET"스폿 덮어 (거기에 저장된 실제 값)이 % EBP 위치를 덮어 쓰기 (모든 FF 넣어) 32 문자 버퍼 어셈블리 파일의 주소가 아닌 스택에 주소가 있습니다.
- 내 어셈블리 바이트 코드를 임 플 래팅합니다. (시작 부분에 nop 명령을 추가하여 4 바이트의 배수로 이루어 졌는지 확인하십시오.)
를 실행하고이
, 우리는 스택이 실행으로 표시되어 있다고 가정합니다 (그렇지 않으면 그들은 우리에게 같은 과제를주지 못할 것이다 이). 다른 아이디어? 고맙습니다. – de1337ed