본문 바로가기

hacking/pwnable74

[Dream hack] Quiz: Linux Memory Layout-1 답더보기기본 지식'BSS세그먼트': 컴파일 시점에 값이 정해지지 않은 전역변수가 위치한다.초기화가 안된 전역변수는 자동으로 0으로 초기화 해준다.c가 위치하는 세그먼트'c'는 초기화 되지 않은 전역변수이다.'c'는 'BSS세그먼트'에 위치한다.int c; // BSS에 위치  참고'BSS 세그먼트'의 특징프로그램의 실행 파일 크기에 영향을 주징 않는다.실행파일을 작게 유지하면서 필요한 메모리 공간을 제공 받을 수 있따.끝 2024. 4. 30.
[Dream hack] Background: Linux Memory Layout 강의 내용서론세그먼트코드 세그먼트데이터 세그먼트BSS 세그먼트스택 세그먼트힙 세그먼트서론메모리 오염(Memory Corruption)cpu의 동작과 메모리 사이에 밀접한 연관이 있음을 의미한다.만약 공격자가 메모리를  조작할 수 있다면 조작된 메모리 값에 의해 CPU도 잘못된 동작을 할 수 있다.Stack Buffer Overlow, Format String Bug, Use After Free, Double Free Bug를 배우고 리눅스 메모리 구조(Memory Layout)에 대해 배운다.세그먼트세그먼트(Segment)리눅스에서 프로세스의 메모리를 크게 5가지의 세그먼트(Segment)로 구분한다.적재되는 데이터의 용도별로 메모리의 구획은 나눈 것,(코드 세그먼트, 데이터 세그먼트, BSS 세그먼트,.. 2024. 4. 26.
[Dream hack] Quiz: Computer Architecture-5 답더보기기본 지식'ah'레지스터의 값은 'rax'의 16비트 부분 중 상위 8비트 이다.16진수는 한 숫자당 4비트 이다. ax값의 계싼'rax'의 값이 '0x0123456789abcdef'이기 떄문에'ah'레지스터의 값은 'ax'에서 왼쪾에서 2개를 추출한다.(0xcd)rax = 0x0123456789abcdef ---- ---- ax = cdef ah = cd  참고'rax': 전재 64비트 (최신 x86-64아키텍쳐에서 사용되는 범용 레지스터)'eax': 하위 32비트'ax': 하위 16비트'al': 하위 8비트 (16비트 중)'ah': 상위 8비트(16비트 중)끝 2024. 4. 25.
[Dream hack] Quiz: Computer Architecture-4 답더보기 기본 지식'eax'레지스터의 값은 'rax'의 하위 32비트 이다.16진수는 한 숫자당 4비트 이다. ax값의 계싼'rax'의 값이 '0x0123456789abcdef'이기 떄문에'eax'레지스터의 값은 가장 오른쪾 8개의 16진수 값을 추출한다.(0x89abcdef) 참고'rax': 전재 64비트 (최신 x86-64아키텍쳐에서 사용되는 범용 레지스터)'eax': 하위 32비트'ax': 하위 16비트'al': 하위 8비트끝 2024. 4. 25.
[Dream hack] Quiz: Computer Architecture-3 답더보기기본 지식'ZF(Zero Flag)', 제로 플레그는 어떤 연산의 결과가 0이 되었을떄 설정된다.예를 들어 두 레지스터 간의 뺄셈 결과가 0이라면, 이는 두 레지스터의 값이 동일함을 의미한다.rax와 rbx의 비교'rax'에서 ''rbx'를 뺀 결과로 'ZF'가 설정 되었다고 한다.그 의미는 'rax - rbx = 0'를 의마한다.(따라서 'rax'와 'rbx'는 서로 같은 값을 가진다.)rax - rbx = 0→ rax = rbx   참고'ZF'는 일반적으로 조건부 분기, 반복문의 종료 등에 사용되어 프로그램의 흐름을 제어하는데 중요한 역할을 한다.끝 2024. 4. 25.
[Dream hack] Quiz: Computer Architecture-2 답더보기기본 지식'al'레지스터의 값은 'rax'의 하위 8비트 이다.16진수는 한 숫자당 4비트 이다. ax값의 계싼'rax'의 값이 '0x0123456789abcdef'이기 떄문에'ax'레지스터의 값은 가장 오른쪾 2개의 16진수 값을 추출한다.(0xef) 참고'rax': 전재 64비트 (최신 x86-64아키텍쳐에서 사용되는 범용 레지스터)'eax': 하위 32비트'ax': 하위 16비트'al': 하위 8비트끝 2024. 4. 25.