리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트(Segment)로 구분합니다. 여기서 세그먼트란 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것인데, 크게 코드 세그먼트, 데이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 그리고 스택 세그먼트로 구분합니다.
레지스터(Register) >* 레지스터는 CPU(Central Processing Unit)가 요청을 처리하는 데 필요한 데이터를 일시적으로 저장하는 기억장치이다. 레지스터는 공간은 작지만 CPU와 직접 연결되어 있으므로 연산 속도가 메모리보다 실제 수십 배에서 수
orw 셸 코드를 작성하기 위한 syscall은 위와 같다파이썬에 있는 pwntools에 shellcraft를 사용하여 풀이python에 pwntools을 import 해준다context.arch를 통해서 자신의 컴퓨터에 맞는 아키텍처를 설정context.log_le
메모리 보호기법 확인$checksec --file=filenamegdb 실행 후 "checksec"으로 확인 가능 실행파일과 관련된 공유 라이브러리, 스택, 힙이 매핑되는 메모리 영역의 주소를 랜덤으로 배치하는 것실행할 때마다 영역의 주소가 랜덤적으로 계속 변경됨이를
버퍼 오버플로우(Buffer Overflow)? > 버퍼 오버플로우(Buffer Overflow)는 연속된 메모리 공간을 사용하는 프로그램에서 할당된 메모리의 범위를 넘어선 위치에 자료를 읽거나 쓰려고 할 때 발생한다. 버퍼 오버플로우가 발생하게 되면 프로그램의 오작