실행가능한 기계 코드가 위치하는 영역ex) main()등의 함수코드컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들의 위치※ data 세그먼트 : 쓰기 가능, 전역 변수와 같은 프로그램이 실행되면서 값이 변할 수 있는 데이터 위치※ rodata 세그먼트 : 쓰기 불
버그 : 컴퓨터과학에서 실수로 발생한 프로그램의 결함디버거 : 버그를 없애기 위해 사용되는 도구, 프로그램을 어셈블리 코드 단위로 실행하면서, 실행결과를 사용자에게 보여줌맥락 : 주요 메모리들의 상태레지스터의 상태를 보여줌rip부터 여러 줄에 걸쳐 디스어셈블 된 결과를
1. 서론 Exploit : 해킹분야에서 상대 시스템을 공격하는 것 셸코드 : 익스플로잇을 위해 제작된 어셈블리 코드 조각 어셈블리어는 기계어와 거의 일대일 대응되므로 사실상 원하는 모든 명령을 CPU에 내리기 가능 2. orw 셸코드 : 파일을 열고, 읽은 뒤 화면에 출력해주는 셸코드 "/tmp/flag"를 읽는 셸코드는 작성, 구현하려는 셸코드의 동...
1. 서론 함수 호출 규약 : 함수의 호출 및 반환에 대한 약속 함수를 호출할 때는 반환된 이후를 위해 호출자의 상태 및 반환주소를 저장해야 함 호출자는 피호출자가 요구하는 인자를 전달해줘야 하고 피호출자의 실행이 종료될 때는 반환 값을 전달받아야 함 함수 호출 규약의 종류 컴파일러는 지원하는 호출 규약 중, CPU 아키텍처에 적합한 것을 선택 CPU의...
스택 버퍼 오버플로우 버퍼 오버플로우 버퍼 : 데이터가 목적지로 이동되기 전에 보관되는 임시 저장소 데이터의 처리속도가 다른 두 장치가 있을 때, 이 둘 사이에 오가는 데이터를 임시로 저장해 두는 것은 일종의 완충 작용을 한다. 수신 측과 송신 측 사이에 버퍼라는 임시 저장소를 두고, 이를 통해 간접적으로 데이터를 전달 버퍼 오버플로우 : 버퍼가 넘치는 ...
스택 카나리 : 함수의 프롤로그에서 스택 버퍼와 반환 주소 사이에 임의의 값을 삽입하고, 함수의 에필로그에서 해당 값의 변조를 확인하는 보호 기법. 카나리 값의 변조가 확인되면 프로세스는 강제 종료 스택 버퍼 오버플로우로 반환 주소를 덮으려면 반드시 카나리를 먼저 덮어야 하므로 카나리 값을 모르는 공격자는 반환 주소를 덮을 때 카나리 값을 변조하게 되는...