728x90 분류 전체보기53 [포너블 기초] 버퍼 오버플로우 버퍼 오버플로우는 문자 그대로 버퍼가 넘치는 것을 의미한다. 버퍼 오버플로 발생 시 버퍼에 다 담지 못한 값들은 버퍼 이후의 공간에 들이차게 되는데, 이때 프로그래머가 의도하지 않은 값이 덮어쓰기로 들이차게 되고 여기서 문제가 발생한다. 8칸짜리 메모리가 있고, 그 안에 4칸짜리 버퍼가 있을 때 그림과 같이 사용자가 버퍼를 초과하는 값을 입력하면 버퍼 이후의 값이 바뀌게 된다. Return Address Overwrite 스택프레임의 끝에 존재하는 return address 영역을 덮어쓰기 함으로써, 함수가 끝날 때 원하는 주소, 원하는 함수의 코드로 분기를 변경하는 기법이다. 아직 포너블을 배우기 시작한지 얼마 되지 않았지만 대부분의 기법이 이 기법으로 끝나는 것으로 보아 매우 중요한 것 같다. 스택 .. 2023. 10. 1. Buckeye_2023 보호되어 있는 글 입니다. 2023. 10. 1. [포너블 기초] x86_handray 보호되어 있는 글 입니다. 2023. 9. 14. [포너블 기초] 함수 호출 규약 함수 호출 규약은 함수를 호출 했을 때와 함수를 실행하고 반활할 떄의 약속이다. 예를 들어 Main함수에서 sum함수를 호출 할 때, sum으로 인자값을 전달해주는데 어떤 방법을 사용하고, sum함수의 호출이 끝났을 때 sum함수에서 return한 값을 어떻게 main함수로 가져오는지 등을 정해놓은 것이 함수 호출 규약이다. x86 함수 호출 규약 함수호출규약 사용 컴파일러 인자 전달 방식 스택 정리 적용 stdcall MSVC Stack Callee WINAPI cdecl GCC, MSVC Stack Caller 일반 함수 fastcall MSVC ECX, EDX Callee 최적화된 함수 thiscall MSVC ECX(인스턴스), Stack(인자) Callee 클래스의 함수 x86-64 함수 호출 .. 2023. 9. 14. 이전 1 ··· 9 10 11 12 13 14 다음