[보안] 해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문

2023. 9. 8. 00:42·IT/코딩

초고

인프런에 "해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문"이라는 무료 강의 알림이 오길래 봤더니 1시간도 안되는 강의였다. 문득 호기심이 생겨서 강의를 듣고 해당 내용을 정리해보았다.

 

0. 시스템 해킹(Pwnable) 이해하기

해킹이란?

  • 해킹의 목표: 하면 안되는 거 하기
  • 하면 안되는 거 => 권한이 없는 행위
  • 의사 면허가 없는 사람의 의료 행위
  • 개발자가 의도하지 않은 프로그램의 동작: Buffer Overflow, Out Of Bound, Off By One, 기타 시스템 해킹 공격 기법

시스템 장악(Shell 실행)

  • "시스템을 장악했다." == "Shell을 실행했다."
  • 내 컴퓨터는 내가 시스템을 장악한 상태다.
  • 나의 통제 하에 있는 행위: 해킹 아님. 내가 시스템을 장악한 상태

시스템

  • PC 그 자체
  • OS를 기반으로 하드웨어를 통제할 수 있는 소프트웨어적 환경
  • Shell: 실행하고 싶은 프로그램(코드)을 실행시켜 주는 프로그램
  • 실행하고 싶은 코드를 실행할 수 있다는 것은 시스템을 장악했다는 것과 동일한 말이다.
  • => 쉘을 실행시킬 수 있다는 것은 시스템을 장악했다는 것과 동일한 말이다.

 

1. 해킹대회(Pwnable)의 문제상황 이해하기

원격(Remote)의 상황 이해하기

  • 남의 컴퓨터로 넘어가서 내 맘대로 계산기를 연다면? 명백한 해킹
  • 해킹하고자 하는 컴퓨터가 반드시 인터넷에 연결되어 있어야 한다.
  • => 공격 대상인 프로그램은 반드시 인터넷에 연결되어 있어야 한다.

 

2. 악의적인 실행흐름 만드는 법

  • 목표: 남의 컴퓨터에서 권한 없이 하고 싶은 거 하기
  • => 구체화: 프로그램의 취약점을 찾아 공격해 쉘을 실행하는 것이 Pwnable의 목표

컴퓨터 구조 이해하기

CPU

  • PC(Program Counter)에 쓰인 주소에 있는 프로그램 코드를 가져와서 실행함
  • 문제는 CPU는 PC에 쓰인 값을 무조건(검증없이) 실행함

악의적인 실행흐름 만들기

따라서 메모리에 악의적인 코드를 적고 PC에 적힌 값을 악의적인 코드가 적힌 메모리 주소로 바꾸기만 하면, CPU는 무조건(검증없이) PC에 적힌 주소로 가서 악의적인 코드를 읽고 실행할 것이다.

 

3. Pwnable 학습을 위한 실습환경설정(Configuration)

  • 인프런 강의 자료 링크 - Pwnable 문제를 풀기위한 CTF configuration 정리
  • 리눅스 운영체제 설치
  • pwntools & gdb 설치
  1. gdb
  • 동적 debugger
  • 프로그램이 실행되며 레지스터, 메모리에 어떤 값들이 담기는지 보여준다.
  • 프로그램이 어떻게 실행되는지 알아야 취약점을 찾고 익스플로잇을 할 수 있다.
  1. pwntools
  • 익스플로잇 코드 작성을 위한 파이썬 라이브러리
  • 리틀/빅 엔디안을 고려한 데이터 전송, 원격 서비스로의 전송 등을 지원한다.

 

4. 취약점 이론과 공격기법 실습 - HelloFlag

5. 취약점 이론과 공격기법 실습 - BasicBOF

'IT > 코딩' 카테고리의 다른 글

[AI] 동영상 요약 모델 - DSNet  (0) 2023.07.16
Windows에 도커 우분투에서 C 프로그래밍하기  (0) 2023.07.03
Docker에서 React Native 세팅 with Expo  (0) 2023.05.18
'IT/코딩' 카테고리의 다른 글
  • [AI] 동영상 요약 모델 - DSNet
  • Windows에 도커 우분투에서 C 프로그래밍하기
  • Docker에서 React Native 세팅 with Expo
KimCookieYa
KimCookieYa
무엇이 나를 살아있게 만드는가
  • KimCookieYa
    쿠키의 주저리
    KimCookieYa
  • 전체
    오늘
    어제
    • 분류 전체보기 (574)
      • 혼잣말 (88)
      • TIL (2)
      • 커리어 (24)
        • Sendy (21)
        • 외부활동 기록 (2)
      • 프로젝트 (186)
        • 티스토리 API (5)
        • 코드프레소 체험단 (89)
        • Web3 (3)
        • Pint OS (16)
        • 나만무 (14)
        • 대회 (6)
        • 정글 FE 스터디 (16)
        • MailBadara (12)
        • github.io (1)
        • 인공지능 동아리, AID (5)
        • 졸업과제 (18)
        • OSSCA 2024 (1)
      • 크래프톤 정글 2기 (80)
      • IT (168)
        • 코딩 (4)
        • CS (18)
        • 에러 (5)
        • 블록체인 (23)
        • Front-End (39)
        • 알고리즘&자료구조 정리 (3)
        • 코딩테스트 (3)
        • BOJ 문제정리 (41)
        • WILT (12)
        • ML-Agents (4)
        • 강화학습 (1)
        • Android (0)
        • LLM (2)
      • 전공 (1)
        • 머신러닝 (1)
      • 자기계발 (20)
        • 빡공단X베어유 (2)
        • 독서 (15)
  • 블로그 메뉴

    • 홈
    • 방명록
    • Github
    • Velog
    • 관리
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    졸업과제
    글리치해커톤
    니어프로토콜
    OS
    numpy
    프로그래머스
    자바스크립트
    MailBadara
    머신러닝
    나만무
    딥러닝
    알고리즘
    docker
    RNN
    react
    부산대
    코드프레소
    파이썬
    해커톤
    pintos
    JavaScript
    리액트
    Pint OS
    Flutter
    크래프톤정글
    핀토스
    사이드프로젝트
    센디
    블록체인
    NEAR Protocol
  • hELLO· Designed By정상우.v4.10.3
KimCookieYa
[보안] 해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문
상단으로

티스토리툴바