본문 바로가기

노트 정리2

GDB, 레지스터 등 정리 [범용 레지스터] EAX - 누산기 레지스터 ECX - 카운터 레지스터 EDX - 데이터 레지스터 DBX - 베이스 레지스터 ESP - 스택 포인터 EBP - 베이스 포인터 ESI - 근원지 인덱스 EDI - 목적지 인덱스 *주요 레지스터 EIP(Instruction Pointer) - 현재 읽고있는 명령의 위치를 가리키는 명령으로 읽고 있는 각 단어를 손가락으로 짚으며 읽듯이 프로세서가 EIP 레지스터라는 손가락을 사용해 읽는것과 같다. EFLAGS 레지스터 - 메모리 세그먼트를 관리하는 레지스터 [어셈블리 언어] set disas intel 명령어로 intel 문법을 사용하며 .gdbinit 파일에 등록하여 유지 가능 (인텔 문법 어셈블리 명령 형식) 명령 ex) mov ebp, esp = 값을 es.. 2023. 12. 11.
포맷스트링 공격 정리 [포맷스트링 공격 원리] 포맷스트링은 printf와 같은 함수에서 %d, %x와 같은 값을 받는 부분이다. 보통 printf("%d",string); 와 같은 방식으로 사용하는데 프로그램을 개발할 때 printf(string)와 같은 방식으로 프로그램을 개발한 상태이며 사용자 입력 값을 받게 될 경우 포맷스트링 취약점이 존재하게 된다. 이는 포맷스트링 인자를 제대로 지정해 주지 않았을 때 공격자가 포맷스트링 인자를 넘겨주면 스택의 주소가 포맷스트링으로 인해 노출되는 취약점이다. ​ [공격 방식] 여기서 공격자는 입력받는 값에 %08x와 같은 값을 넣어주어 프로그램이 취약한지 확인할 수 있다. 해당 값을 넣어주었을 때 메모리 주소값이 반환 값으로 나온다면 취약함에 해당한다. 공격 시에는 임의의 문자열과 포.. 2023. 12. 11.