CPU역할 : 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고 ISA(Instruction Set Architecture, 명령어 집합 구조)에 따라 이를 처리합니다.그리고 연산의 결과를 다시 메모리에 적재한다.CPU의 동작과 메모리는 밀접한 관계를 가지
기계어는 0과 1로 구성된다. 단어위주로 문장을 구사하는 우리한테는 이해하기 매우 어렵다. 그래서 과학자 중 한 명인 David Wheeler은 EDSAC를 개발 하면서 어셈블리어와 어셈블러를 고안해냈다.어셈블러는 개발자들이 어셈블리어(C언어 같은 프로그래밍 언어)로
해킹분야에선 상대 시스템을 공격하는것을 익스플로잇(Exploit)이라고 부른다. 이 커리큘럼에서는 9가지 공격기법을 배우는데 이 코스에서는 셸코드를 소개한다.익스플로잇을 위해 제작된 어셈블리 코드 조각을 일컫습니다.일반적으로 셸을 획득하기 위한 목적으로 셸코드를 사용한
함수 호출 규약은 함수의 호출 및 반환에 대한 약속이다. 한 함수에서 다른 함수를 호출할 떄, 프로그램의 실행 흐름은 다른 함수로 이동한다. 그리고 호출한 함수가 반환하면, 다시 원래 함수로 돌아와서 기존의 실행 흐름을 이어나간다. 그러믈호 함수를 호출할 때는 반환된
x64 아키텍쳐에서 다음의 명령어로 스택을 조작한다.push val : val을 스택 최상단에 쌓음밸류 0x31337을 0x7fffffffc400에서 연산인 8을 뺀 0x7fffffffc3f8(주소)에 넣는다.push reg : 스택 최상단의 값을 꺼내서 reg에 대입
Address Space Layout Randomization(ASLR)은 바이너리가 실행될때마다 스택, 힙, 공유 라이브러리등을 임의의 주소에 할당하는 보호 기법이다.스택, 힙, 라이브러리 함수, 코드영역 함수, 라이브러리 매핑주소들을 보면 특징을 알수있다.코드영역의
라이브러리는 컴퓨터 시스템에서, 프로그램들이 함수나, 변수를 공유해서 사용할 수 있게 한다. 대개의 프로그램은 서로 공통으로 사용하는 함수들이 많다. 예를 들어, printf, scanf, strlen, memcpy, malloc등은 많은 C프로그래머들이 코드를 작성하
여태 공부했던 공격기법과 보호기법을 순서대로 정리해보면 다음과 같다.Return Address Overwrite : 반환 주소를 악성함수의 주소로 덮어서 셸 획득Stack Canary : 스택 프레임의 반환 주소 전에 랜덤한 카나리를 주입하여 반환 주소를 덮기 어렵게
스택의 반환 주소를 덮는 공격은 스택 카나리, NX, ASLR이 도입되며 점점 어려워졌다. 공격 기법은 셸 코드의 실행에서 라이브러리 함수의 실행으로, 그리고 다수의 리턴 가젯을 연결해서 사용하는 Return Orinted Programming(ROP)로 발전했다.NX
방학이란 긴 시간동안 교수님이 내신 코드 문제를 풀고 남은 한달을 드림핵에서 시스템 해킹을 나름 열심히 이해하고 내껄로 만들려고 노력했다. 지금부터 정리하는건 이번 한달동안 내머리속에 습득했던것들을 안보고 기억나는대로 설명해볼것이다. 리눅스에서 쉘을 통해 명령어를 입력
이번 회차에서는 RELRO 보호기법을 공부해볼 것이다. 이전에 배웠던 background:Library에서 ELF는 GOT를 활용하여 반복되는 라이브러리 함수의 호출 비용을 줄인다 배웠다. GOT를 채우는 방식은 다양한데, 전에 배운 방법은 처음 호출될때 함수의 주소를