[linux] 4. PIE에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 4. PIE에 대하여

PIE Position Independent Execution Linux Memory Protection - 4 1. What is PIE? 리눅스 보호기법의 마지막, PIE입니다. 우선 PIE는 Position Independent Execution의 약자로, 해석하면 "위치 독립 실행"이라는 뜻입니다. 그럼 파일이 위치 독립적으로 실행되면 어떤 일이 생기는지 봅시다. 결론적으로 PIE 보호기법이 적용되면 실행할 때마다 바이너리의 주소가 랜덤화 됩니다. 무슨 말인지 잘 모르겠다구요? 아래 캡쳐본을 봅시다. 다음과 같이 스택을 제외한 바이너리의 주소까지도 offset만을 가지고 있고, 실행시 바뀌게 됩니다. 실습으로 직접 해보는 걸로 합시다. +) 당연히 gdb-peda의 checksec로 확인 가능합니..

2020.11.27 게시됨

[linux] 3. NX(with DEP)에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 3. NX(with DEP)에 대하여

NX(with DEP) Non-Executable / Data Execution Protection Linux Memory Protection - 3 1. What is NX/DEP? NX와 DEP는 둘 다 같은 개념의 보호기법으로 각각 Non executable과 Data Execution Protection의 약자입니다. 각각의 의미를 읽어보면 한 마디로 '실행시키지 않는다'입니다. 좀 더 자세히 말하자면 'heap과 stack과 같이 buffer overflow 공격에 이용되는 메모리 공간에 있는 코드를 실행시키지 않는다'는 것이죠. 즉 쉽게 말해 쉘코드를 버퍼에 삽입해도 실행시키지 않는다는 뜻입니다. NX와 DEP의 차이점은 단순히 DEP는 같은 개념이지만 윈도우 플랫폼에서 사용되는 보안 기술이라..

2020.10.13 게시됨

[linux] 2. Canary에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 2. Canary에 대하여

Canary Linux Memory Protection - 2 1. What is Canary? **Stack Smashing Detected** 빼앵앵애ㅐㅇ애에에ㅔㅔㄱ Canary기법이란 'buffer와 SFP(Stack Frame Pointer) 사이에 buffer overflow를 탐지하기 위한 임의의 데이터를 삽입하는 기법'입니다. 왜 이런 걸 넣냐구요? 기본적인 스택 구조와 카나리가 활성화된 스택 구조의 차이점을 봅시다. 왼쪽은 Canary가 꺼져있고, 오른쪽은 Canary가 활성화된 스택입니다. buffer와 SFP사이에 Canary라는 것이 생겼죠? 많은 공격기법은 eip 레지스터를 변경하는 것을 목표로 두고 있는데, 그 중 다수의 기법들이 RET를 변경합니다. 그러나 Canary로 Memo..

2020.10.13 게시됨

[linux] 1. ASLR(Adress Space Layout Randomization)에 대하여 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 1. ASLR(Adress Space Layout Randomization)에 대하여

ASLR Address Space Layout Randomization Linux Memory Protection - 1 1. What is ASLR? 자 오늘은 리눅스 메모리 보호기법 첫 번째 입니다. ASLR에 대해서 배워 볼 건데요, 일단 ASLR이란 Address Space Layout Randomization의 줄임말입니다. 직역하면 "주소 공간 배열 무작위화" 입니다. 말 그대로 주소를 매번 실행할 때마다 무작위화시켜 공격을 방해합니다. 이때 어떤 주소를 랜덤화시키는지가 중요합니다. ASLR은 데이터영역만 무작위화시킵니다. (참고)같은 방법으로 바이너리 영역을 무작위화시키는 보호기법은 PIE입니다. 참고로 데이터 영역은 대표적으로 스택, 힙, 라이브러리 영역을 포함하고, 다른 영역들도 있긴 한..

2020.10.11 게시됨

[linux] 0. 메모리 보호기법 - abstract 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] 0. 메모리 보호기법 - abstract

이번주는 메모리 보호기법에 대해서 서술해보려고 합니다. 일단 메모리 보호기법 자체에 대한 정의를 알아봅시다. 메모리 보호는 컴퓨터 메모리의 사용을 제어하는 방법이며 모든 운영 체제에서 중요한 쟁점사항 중 하나이다. 운영 체제에서 실행하고 있는 프로세스가 자신에게 할당되지 않은 영역의 메모리에 접근하는 것을 막는 것이 메모리 보호의 주된 목적이다. 이를 통해 프로세스 내의 버그가 다른 프로세스의 동작에 영향을 미치는 것을 예방하며 악성 소프트웨어가 시스템에서 허가되지 않은 접근권한을 갖고 시스템에 영향을 끼치는 것을 막아준다. -Wikipedia 네. 뭐 위키는 저렇다는데 쉽게 얘기하면 메모리 사용을 제어하는 방법입니다. 시스템 해킹을 배워보신 분이라면 사용하길 원하는 함수/메모리의 주소, 입력해야 하는 ..

2020.10.11 게시됨

[C언어] C언어로 수박받기 게임을 만들어보았습니다. 포스팅 썸네일 이미지

Coding_Algorithm/C_C++

[C언어] C언어로 수박받기 게임을 만들어보았습니다.

그냥 모든걸 다 하기 싫어서 간단한 게임을 만들어봤습니다. 사실은 ctf문제용으로 만들었는데 생각보다 프로그램이 복잡해져서 그냥 버리는 코드로 나둡니다. 코드는 집에있는 책에서 다뤘던 예제랑 비슷하게 만들었습니다. 책은 "명품 C언어 프로젝트" 참고했습니다. 이렇게 수박을 내가 접시를 움직여서 받는게 아닌 초능력을 이용해서 수박을 움직여야하는 개똥겜을 만들어버렸읍니다. 아니 이게 어떻게 된거냐면 원래는 우주선 착륙시키는 게임인데 뭔가 여름관련 커스터마이징해보겠다고 우주선을 수박으로 바꿨다가 생각해보니깐 우주선을 움직이자 >> 수박을 움직이자 가 돼버려서...ㅋㅋㅋㅋㅋ 애매하게 성공하면 저렇게 되고 실패하면 저런 인성터진말과 함께 마무리됩니다. 성공하면 그냥 성공 축하한다는 말이 뜹니다. 개 똥겜이여도 전..

2020.08.17 게시됨

[linux] gdb에서 core사용하기 포스팅 썸네일 이미지

Coding_Algorithm/Operating System

[linux] gdb에서 core사용하기

GDB에서 core 사용하기 gdb로 분석을 하다보면, 내가 맞다고 생각했던 payload가 답이 아닐 때가 있습니다. 특히 Segmentation Fault같은 에러가 발생하면 뒷목잡기를 유발하죠. 이는 파일이 직접 실행되면서 실제 동적 프로세서 주소와 차이가 있기 때문입니다. 이럴 때 사용할 수 있는 core파일 이라는 게 있습니다. 간단히 설명하자면, 어떤 프로그램이 각종 crash를 발생하면서 프로그램을 종료했을 때, 종료하기 전 상황을 core라는 파일로 남깁니다. 그럼 이 core파일 기준으로 분석을 해준다면, 이는 동적 프로세서가 직접 할당한 주소이기 때문에, 오차가 발생할 일이 없다는 것이죠. 우선 문제 예시는 LOB wolfman입니다. 우선 파일을 복사해줍니다. 복사를 해주는 이유는 자..

2020.07.17 게시됨

[C로 쓴 자료구조론] 1장 연습문제-12번(멱급수) 풀이 포스팅 썸네일 이미지

Coding_Algorithm/DS_Algorithm

[C로 쓴 자료구조론] 1장 연습문제-12번(멱급수) 풀이

12번 문제 S가 n개의 원소로 된 집합일 때 S의 멱집합(powerset)은 모든 가능한 S의 부분 집합이다. 즉, S = {a, b, c}이면 powerset(S) = { {}, {a}, {b}, {c}, {a, b}, {b, c}, {a, c}, {a, b, c} } 이다. powerset(S)를 계산하는 순환 함수를 계산하여라. 문제가 약간 1장 3번같은 느낌이네요. 이 풀이도 참고하면 좋을 것 같습니다. https://dokhakdubini.tistory.com/186 [C로 쓴 자료구조론] 1장 연습문제-3번(Boolean출력) 풀이 1장 연습문제-3번(Boolean출력) 풀이입니다. 3. n개의 Boolean 변수 x1, x2, x3, ... ,xn이 주어졌을 때, 이 변수들이 가질 수 있는..

2020.05.17 게시됨