본문 바로가기

Security/System Hacking42

[Dreamhack System Hacking] STAGE 4 - 함께실습 [함께실습] Stack Buffer Overflow [Exploit Tech : Return Address Overwrite] 1. 실습 코드 - 이번 실습에 사용할 예제 코드 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } void get_shell() { char *cmd = "/bin/sh"; char *args[] = {cmd, NULL}; execve(cmd, args, NULL); } int main() { char buf[0x28]; init(); printf(.. 2022. 1. 30.
[Dreamhack System Hacking] STAGE 4 [Calling Convention] - 함수 호출 규약 1. 함수 호출 규약 1) 함수 호출 규약 - 함수의 호출 및 반환에 대한 약속 - 함수 호출 규약 적용하는 것은 일반적으로 컴파일러의 역할 2) 종류 - x86 아키텍처 ① cdecl ② stdcall ③ fastcall ④ thiscall - x86-64 아키텍처 ① System V AMD64 ABI의 Calling Convention ② MS ABI의 Calling Convention 2. x86호출 규약 : cdecl 1) cdecl - x86 아키텍처는 레지스터의 수가 적어 스택을 통해 인자를 전달 - 인자를 전달하기 위해 사용한 스택을 호출자가 정리함 - 스택을 통해 인자를 전달할 때는 마지막 인자부터 첫번째 인자까지 거꾸로 스택에 pu.. 2022. 1. 23.
[Dreamhack System Hacking] STAGE 3 [gdb 설치] 1. 디버거 1) 디버거 - 버그를 없애기 위해 사용하는 도구 - 프로그램을 어셈블리 코드 단위로 실행하면서 실행결과를 사용자에게 보여줌 - 개발자 -> 작성한 코드의 문제점을 명확하게 찾을 수 있게 됨 - 해커, 리버스 엔지니어 -> 버그 탐색의 효율을 높일 수 있게 되어 취약점 발견이 쉬워짐 2. gdb & pwndbg 1) 실습 예제 주어진 코드를 작성해서 c 파일을 만든 뒤 컴파일 해주고 디버깅을 시작한다. 리눅스는 실행파일의 형식으로 ELF를 규정하고 있다고 한다. ELF는 크게 헤더와 여러 섹션들로 구성 헤더 : 실행에 필요한 여러 정보 섹션 : 컴파일된 기계어 코드, 프로그램 문자열을 비롯한 여러 데이터 포함 ELF 헤더 중에 진입점이라는 필드 존재 -> 운영체제는 ELF를 .. 2022. 1. 23.
[Dreamhack System Hacking] STAGE 2 - shell_basic 보호되어 있는 글 입니다. 2022. 1. 23.
[Dreamhack System Hacking] STAGE 2 [Computer Architecture] 1. 컴퓨터 구조 1) 컴퓨터 구조 - 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고 이들을 구성하는 방법 - 컴퓨터 기능 구조에 대한 설계, 명령어 집합구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 포함 2) 컴퓨터 기능 구조에 대한 설계 - 효율적인 연산을 위해 컴퓨터에 필요한 기능들을 고민, 설계하는 분야 - ex. 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조 3) 명령어 집합구조(CPU 명령어에 대한 설계) - CPU가 처리해야하는 명령어 설계하는 분야 - ex. ARM, MIPS, AVR, 인텔의 x86 및 x86-64 등 2. 폰 노이만 구조 1) 컴퓨터의 핵심 기능 - 연산, 제어, 저장.. 2022. 1. 16.
[Dreamhack System Hacking] STAGE 1 Dreamhack System Hacking STAGE 1 STAGE 1에 적혀있는대로 먼저 소개하는 글을 읽은 뒤 리눅스 환경을 구축하면 된다. 소개하는 바와 같이 우분투를 설치한 뒤 echo "Hello Ubuntu!"를 치라는 대로 치면 아래와 같은 화면이 뜬다. 여기까지 했을 경우 무사히 STAGE 1을 마칠 수 있다. 2022. 1. 1.