분류 전체보기

    [Protection Tech.] ASLR

    ASLR = Address Space Layout Randomization = 메모리 손상 취약점 공격을 방지하기 위한 기술; 라이브러리, 힙, 스택 영역 등의 주소를 바이너리가 실행될 때마다 랜덤하게 바꿔 RTL 등 정해진 주소를 이용한 공격을 막는 보호기법이다. Detecting ASLR NX bit의 경우 바이너리의 컴파일 옵션에 따라 적용 여부를 결정했지만 ASLR은 서버의 설정파일에 의해 적용 여부가 결정된다. ▷Ubuntu16.04: /proc/sys/kernel/randomize_va_space 파일의 값을 통해 확인할 수 있다. ▶설정 파일의 값 0 ASLR을 적용하지 않음 (해제) 1 스택, 라이브러리 메모리를 랜덤화 2 스택, 힙, 라이브러리 메모리를 랜덤화 현재 설정되어 있는 ASLR..

    [LOB] gate → gremlin

    xshell에 연결했다. 안전하게 사용하기 위해.. gremlin을 복사해 g를 만들었다. 항상 시작전에 $ bash2 입력하기! Analyze - simple bof 문제 - strcpy 함수에서 buffer overflow 취약성이 나타나기 때문에 이 함수에 bof를 일으켜 문제를 풀면 될 것이다. - buffer(256) + SFP(4) + RET(4) 이런식으로 넣으면 될 것 같다. - argc가 2개 미만일 때(=명령어만 있는 경우) 오류메시지를 출력하고 종료한다. - 위의 조건에서 통과된다면 인자로 입력한 argv[1]이 버퍼에 복사되고 그 주소가 출력될 것이다. - 32bit - not stripped - dynamically linked debugging strcpy함수를 실행하여 buff..

    PLT, GOT

    PLT, GOT Procedure Linkage Table(PLT) = 외부 라이브러리 함수를 사용할 수 있도록 주소를 연결해주는 역할을 하는 테이블 ▷ PLT의 주소는 고정되어 있기 때문에 서버에 ASLR 보호기법이 적용되어 있어도 PLT로 점프하면 RTL과 비슷하게 공격할 수 있다, Global Offset Table(GOT) = PLT에서 호출하는 resolve 함수를 통해 구한 라이브러리 함수의 절대 주소가 저장되어 있는 테이블 ▷ 초기에는 라이브러리 함수의 주소를 구하는 바이너리 코드 영역의 주소가 저장되어 있다가, 함수가 처음 호출되면서 라이브러리 함수의 실제 주소가 저장된다. ASLR이 적용되어 있는 환경에서, 동적으로 라이브러리를 링크해 실행되는 바이너리(Dynamically Linked ..

    [Protection Tech.] NX bit

    NX bit = No(Never) eXecute bit (실행 방지 비트) = 메모리에 쓰기 권한과 실행 권한을 동시에 부여하지 않음으로 해당 프로그램의 공격을 어렵게 한다; 프로세스 명령어나 코드, 데이터의 저장을 위한 메모리 영역을 따로 분리하는 CPU의 기술이다. → NX bit가 적용된 메모리 구역은 데이터 저장을 위해서만 사용되고, 프로세서 명령어가 실행되지 않도록 한다. DEP = Data Execution Prevention = MS Windows 운영 체제에 포함된 보안기능으로, 악의적인 코드가 실행되는 것을 방지하기 위해 메모리를 추가적으로 확인하는 HW 및 SW 기술이다. - 하드웨어 DEP: 메모리에 명시적으로 실행코드가 포함되어 있는 경우를 제외하고 프로세스의 모든 메모리 위치에서 ..

    2021_겨울_시스템 계획 (21기)

    주차 내용 Pre (12/28~1/3) - VMware Workstation Pro 설치 - Ubuntu 16.04 설치 - IDA Pro(32bit/64bit 모두) 설치 - LOB 다운로드 (링크 아래) - xshell 설치 - 달고나 문서 3장(레지스터 구조)까지 정리 1주차 (1/4~1/10) - 달고나 문서 ~p.53까지 정리 (직접 실행 꼭 해보기) - Bandit: Over the wire Level0->Level5 (리눅스 명령어들 복습) 2주차 (1/11~1/17) - 달고나 문서 끝까지 정리 (직접 실행 꼭 해보기) - Bandit: Over the wire Level6->Level10 (리눅스 명령어들 복습) 3주차 (1/18~1/24) - [dream hack] Memory Corr..

    시스템해킹 설치 프로그램

    - VMware Workstation pro 15 가상 머신을 돌리기 위한 프로그램 - Ubuntu 16.04 LTS 처음 시스템 해킹을 공부할 때 가장 기초적인 리눅스 커널을 기본으로 하는 우분투 버전 18.04의 경우에는 glibc 2.27 버전이 적용되어 있어 실습을 진행할 때 결과가 조금씩 달라질 수 있다. - IDA Pro v 7.0 (32-bit/64-bit) 바이너리 파일 디컴파일러 주로 풀게 되는 포너블은 32bit, 64bit 둘 다 많이 있으므로 두 버전을 모두 설치해야한다. +) 그 외 우분투 내에 설치할 프로그램들 doongdangdoongdangdong.tistory.com/92?category=869860 - xshell 터미널 에뮬레이터 가상 머신에 연결해서 바이너리 파일 등을..

    [CentOS 8] APM 웹 서버

    APM = Apache 웹 서버 + PHP 웹 프로그래밍 언어 + MariaDB (MySQL의 후속버전) 데이터베이스 >> 리눅스에서는 LAPM, 윈도우에서는 WAPM 으로도 부른다 APM 설치 (CentOS에서 dnf 명령을 이용해 쉽게 설치할 수 있다) 설치할 패키지: httpd, php, php-mysqlnd, mariadb-server # dnf -y install httpd php php-mysqlnd mariadb-server 서비스 가동 # systemctl status httpd # systemctl start httpd # systemctl status httpd

    [DS] Tree: Height of a Binary Tree

    이진 트리의 높이(height)를 구하는 함수를 작성해야한다. 트리의 높이는 root 노드를 0으로 두고 아래로 한 층씩 내려갈 수록 1을 더해나가고 최말단 노드까지의 거리로 한다. int getHeight(struct node* root) { // Write your code here if(root == NULL) return -1; int m = getHeight(root->left)>getHeight(root->right)?getHeight(root->left):getHeight(root->right); return m+1; } 재귀문을 이용해 반복적으로 트리를 탐색할 수 있도록 했다. 그리고 root가 null일 때의 조건에서 -1을 리턴하면서 트리의 높이가 0부터 시작된다는 부분을 고려하도록 했다.

    Cats and a Mouse

    고양이 A와 B, 쥐 C사이의 거리를 이용해 경우에 따라 서로 다른 문자열을 출력하도록 하는 함수 작성 www.hackerrank.com/challenges/cats-and-a-mouse/problem char* catAndMouse(int x, int y, int z) { int d1 = abs(x-z); int d2 = abs(y-z); if(d1 > d2) return "Cat B"; else if(d1 < d2) return "Cat A"; else { return "Mouse C"; } } △ 작성한 부분 abs 함수를 사용해 x와 z, y와 z의 거리를 절대값으로 각각 d1, d2 변수에 저장한다. 그리고 그 값을 비교해 필요한 문자열을 출력한다. #include #include #includ..

    XRDP 서버

    XRDP 서버 X 윈도우 환경으로 원격접속 하고 싶을 때 사용할 수 있는 원격 접속 서버 (= 그래픽 모드로 원격 관리를 지원한다) 원격지로 그래픽 화면을 전송한다. >> 텔넷, ssh 서버에 비해 느려진다. Windows의 '원격 데스크톱 연결' 프로그램을 사용해 리눅스에 그래픽 환경으로 접속한다. XRDP 외에도 X 윈도우 환경으로 접속하는 방식으로는 VNCSERVER도 있다. XRDP 서버 구축 XRDP 서버 설치 # dnf -y install epel-release >> xrdp가 CentOS8에서 기본으로 제공하는 설치 패키지가 아니기 때문에 추가 패키지를 제공하는 저장소인 EPEL을 설치한다. 또는 xrdp 설치파일을 인터넷에서 직접 다운로드 받아 설치를 할 수 있다. # dnf -y inst..