본문 바로가기

systemhacking6

[DreamHack] System Hacking Stage3 - Tool: pwntools 설치 Lecture pwntools 설치 - 깃허브에 자세히 나와있다. (링크) GitHub - Gallopsled/pwntools: CTF framework and exploit development library CTF framework and exploit development library. Contribute to Gallopsled/pwntools development by creating an account on GitHub. github.com pwntools 설치 $ sudo apt-get update $ sudo apt-get install python3 python3-pip python3-dev git libssl-dev libffi-dev build-essential $ sudo pyth.. 2022. 12. 21.
[DreamHack] SystemHacking Stage2 - x86 Assembly: Essential Part 1 Lecture 해커의 언어: 어셈블리 - 컴퓨터 속에는 복잡하고 논리적인 인과관계가 존재하고, 여러 개체가 상호작용한다. - 그 속에서 통용되는 기계어(Machine Code)라는 언어가 있다. - 해커는 컴퓨터의 언어로 작성된 소프트웨어에서 취약점을 발견해야 하기 때문에 컴퓨터 언어에 관한 지식을 습득해야한다. - 그런데, 기계어는 0과 1로만 이루어져있어서 이해하기 어렵다. - 그래서 David Wheeler는 EDSAC를 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)를 고안했다. - 어셈블러? 일종의 통역사이다. 어셈블리어로 코드 작성 -> 기계어로 변환 시켜준다. - 소프트웨어를 역분석 하는 사람들은 기계어를 어셈블리 언어로 번역하는 역어셈블러(Disas.. 2022. 12. 20.
[DreamHack] SystemHacking Stage2 - Background: Computer Architecture Lecture 컴퓨터 구조(Computer Architecture) - 컴퓨터가 효율적으로 작동할 수 있도록 하드웨어 및 소프트웨어의 기능을 고안하고 구성하는 방법이다. - 기능 구조에 대한 설계, 명령어 집합 구조, 마이크로 아키텍처, 기타 하드웨어 및 컴퓨팅 방법에 대한 설계 등이 포함된다. 기능 구조에 대한 설계 - 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고 설계하는 분야이다. - 폰 노이만 구조, 하버드 구조, 수정된 하버드 구조가 있다. 명령어 집합구조(Instruction Set Architecture) - CPU가 처리해야하는 명령어를 설계하는 분야이다. - ARM, MIPS, AVR, Intel의 x86, x86-64등이 있다. 마이크로 아키텍처(Micr.. 2022. 12. 19.
[DreamHack] System Hacking Stage2 - Quiz: Linux Memory Layout #include int a = 0xa; const char b[] = "d_str"; int c; int foo(int arg){ int d = 0xd; return 0; } int main(){ int *e = malloc(sizeof(*e)); return 0; } 문제 1. e는 어느 세그먼트의 데이터를 가리키는가? 답: 힙 문제 2. foo가 위치하는 세그먼트는 어디인가? 답: 코드 문제 3. a가 위치하는 세그먼트는 어디인가? 답: 데이터 문제 4. b가 위치하는 세그먼트는 어디인가? 답: 읽기 전용 데이터 (rodata) 문제 5. c가 위치하는 세그먼트는 어디인가? 답: BSS 문제 6. "d_str"이 위치하는 세그먼트는 어디인가? 답: 읽기 전용 데이터 (rodata) 문제 7. d가 위.. 2022. 12. 19.
[DreamHack] System Hacking Stage2 - Background: Linux Memory Layout Lecture 세그먼트(Segment) - 적재되는 데이터의 용도별로 메모리의 구획을 나눈 것 이다. - 리눅스에서는 프로세스의 메모리를 크게 5가지의 세그먼트(코드 세그먼트, 데이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 스택 세그먼트)로 나뉜다. 이렇게 나누는 이유? 각 용도에 맞게 적절한 권한을 부여할 수 있다는 장점이 있기 때문! 권한의 종류? 읽기, 쓰기, 실행 세 가지가 존재한다. CPU는 메모리에 대해 권한이 부여된 행위만 할 수 있다. 예를 들어.... 데이터 적재가 되는 곳에는 읽기 권한이 부여되고, 실행 대상이 아니기 때문에 실행 권한은 부여되지 않는다! 코드 세그먼트(Code Segment) - 실행 가능한 기계 코드가 위치하는 영역이다. - 다른 말로 텍스트 세그먼트(Text S.. 2022. 12. 19.
[DreamHack] System Hacking - STAGE 1 리눅스 환경 구축 1. windows powershell을 관리자 권한으로 실행 2. 다음 명령어 입력 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart wsl --set-default-version 2 3. Microsoft store에서 Ubuntu 18.04를 설치한다. 4. echo "Hello Ubuntu!" 입력해서 Hello Ubuntu!가 출력된다면 성공! ps.만약.... 아래 이미지와 같은 오류가 뜬다면? https://learn.mi.. 2022. 12. 19.
728x90