보호되어 있는 글입니다.

전체 글
Major. Information Security
출처 : https://dreamhack.io/lecture/roadmaps/2Return to Library📌 실습 예제 코드// Name: rtl.c// Compile: gcc -o rtl rtl.c -fno-PIE -no-pie#include #include #include const char* binsh = "/bin/sh";int main() { char buf[0x30]; setvbuf(stdin, 0, _IONBF, 0); setvbuf(stdout, 0, _IONBF, 0); // Add system function to plt's entry system("echo 'system@plt'"); // Leak canary printf("[1] Leak Canary\n"); p..

01 라이브러리라이브러리는 컴퓨터 시스템에서, 프로그램들이 함수나, 변수를 공유해서 사용할 수 있게 한다. C언어를 비롯하여 많은 컴파일 언어들은 자주 사용되는 함수들의 정의를 묶어서 하나의 라이브러리 파일로 만들고, 이를 여러 프로그램이 공유해서 사용할 수 있도록 지원하고 있다. 라이브러리를 사용하면 같은 함수를 반복적으로 정의해야 하는 수고를 덜 수 있어서 코드 개발의 효율이 높아진다는 장점이 있다. 각 언어에서 사용되는 함수들은 표준 라이브러리가 제작되어 있기에 개발자가 쉽게 해당 함수들을 사용할 수 있는 것이다. 대표적으로, C의 표준 라이브러리인 libc는 우분투에 기본으로 탑재된 라이브러리이며, 실습환경에서는 /lib/x86_64-linux-gnu/libc.so.6에 있다. 02 링크(1) ..

01 NX(1) NXNo-eXecute(NX)는 실행에 사용되는 메모리 영역과 쓰기에 사용되는 메모리 영역을 분리하는 보호 기법▶ 어떤 메모리 영역에 대해 쓰기 권한과 실행 권한이 함께 있으면 시스템이 취약해지기 쉽다. CPU가 NX를 지원하면 컴파일러 옵션을 통해 바이너리에 NX를 적용할 수 있음NX가 적용된 바이너리는 실행될 때 각 메모리 영역에 필요한 권한만 부여받음NX가 적용된 바이너리에는 코드 영역 외에 실행 권한이 없음반면, NX가 적용되지 않은 바이너리에는 스택 영역([stack])에 실행 권한이 존재하여 rwx 권한을 가지고 있음 📌 NX의 다양한 명칭NX를 인텔은 XD(eXecute Disable) , AMD는 NX, 윈도우는 DEP(Data Execution Prevention) , ..
보호되어 있는 글입니다.

우선 문제 파일을 다운로드 받으면 basic_exploitation_001이라는 이름의 C언어 파일과 실행파일이 있는 것을 볼 수 있다. 두 파일 중 실행파일을 gdb 모드로 실행하고 checksec 명령어를 활용하여 적용된 보호기법을 확인해보자. 아래와 같이 gdb 모드를 실행하고 checksec 명령어를 통해 NX 보호 기법이 활성화 되어있으므로 쉘 코드가 실행되지 않고 있다는 것을 알 수 있다.이번에는 basic_exploitation_001.c 코드에 대해 분석해보자. ✅ main 함수: buf에 0x80만큼 사이즈가 할당되고, intialize 함수가 실행된 이후 gets로 buf를 입력받고 있음 ✅ initialize 함수: 실행되고 30초가 지나면 Time Out 메시지를 출력하고 프로그램 ..