SlideShare a Scribd company logo
1 of 65
Download to read offline
Buffer OverFlow의 기초 bof_기초 세미나
CONTENTS
) BJDT
  S
 3A776 1
 
BJDT
  S
 3 71
 
x
 
, r
 
- t
  l
 
. 3 7
 
 
/ np1
 
0 t !!
사용자가 입력한 데이터의 크기가 너무 과하여 제한된 버퍼의 용량에서 넘처버렸다.
What is the BOF?
What is BUFFER?
시스템이 연산 작업을 하는데 있어 필요
한 데이터를 일시적으로 메모리 상에 저
장하는 임시기억공간

대부분의 프로그램에서는 버퍼를 스택에
다 생성한다.
What is BUFFER?
What is BUFFER?
Segmentation falut ??
What is BOF??
• 시스템 해킹 기법 중 하나
• 주어진 프로그램의 버퍼를 overflow시켜서 오류를 일으킴
• stack bof, heap bof 등 여러 종류가 있음
• rtl, rop, remote bof 등 여러 기법이 존재
메모리 구조
) d
  x
 
 W
  x
 
 
 
f
 
  t
 
 
 
t
 S I OTof
 i t
 
 W
 
x
  h
8086 메모리
(
( ((((((((
메모리 구조
1. 오늘날 시스템은 멀티태스킹이 가능하
므로 메모리에는 여러 개의 프로세스
가 저장되어 병렬적으로 작업을 수행
한다.
2. 가용한 메모리 영역에는 여러개의
segment들이 저장될 수 있다.
3. segment는 실행시점에 실제 메모리
의 어느 위치에 저장될 지가 결정된다.
(
( ((((((((
메모리 구조
Code Segment
따라서 segment에서는 logical address를 사용한다.
Logical address는 실제 메모리 상의 주소와 매핑되어 있다.
시스템이 알아들을 수 있는 instruction들
분기과정과 점프, 시스템 호출 등을 수행
메모리 상의 특정 위치에 있는 명령을 지정해 주어함.
하지만 segment는 자신이 현재 메모리 상에 어느 위치
에 저장될지 컴파일 과정에서는 알 수 없기 때문에 정확
한 주소를 지정할 수 없다.
실제 메모리 주소 physical address는
offset(자신의 시작위치) + logical address
(
( ((((((((
메모리 구조
segment의 실제 메모리 주소 0x80010000
code segment내의 Instruction 1,2,3의 주소들은
0x00000100~300(logical address)
physical address
offset(0x80010000) + logical address(0x00000100~300)
0x80010100
0x80010200
0x80010300
Code Segment
메모리 구조
Data Segment
4개의 data segment로 나뉨
현재 모듈의 data structure
상위 레벨로부터 받아들이는 데이터 모듈
동적 생성 데이터
다른 프로그램과 공유하는 공유데이터
프로그램 실행 시 사용되는
데이터(전역변수)가 들어감
메모리 구조
Stack Segment
현재 수행되고 있는 handler, task, program을
저장하는 데이터 영역
지역변수들이 자리 잡는 공간
처음 생성될 때, 그 필요한 크기만큼 만들어짐
프로세스의 명령에 의해 데이터를 저장해 나가
는 과정을 거치게 되는데 이것은 stack pointer
(SP)라고 하는 레지스터가 스텍의 맨 꼭대기에
서 가리키고 있다
스텍에 데이터를 저장하고 읽어 들이는 과정은
PUSH와 POP instruction에 의해서 수행된다.
(
( ((((((((
레지스터
범용 레지스터
논리 연산, 수리연산에 사용되는 피연산자, 주소를 계산하는데 사용되는 피연산자,
그리고 메모리 포인터가 저장되는 레지스터
세그먼트 레지스터
Code segment, Data segment, Stack segment를 가리키는 주소가 들어가 있는
레지스터
플래그 레지스터
프로그램의 현재 상태나 조건 등을 검사하는데 사용되는 플래그들이 있는 레지스터
인스트럭션 포인트
다음 수행해야 하는 명령이 있는 메모리 상의 주소가 들어있는 레지스터
명령어의 집합과 데이터들의 저장공간
레지스터
범용 레지스터
62C
 
 
 
 
 
 
63C
 
 5?
 ? I OT
 k
 W f
 
 
64C
 
 
  x
 u
 
 

More Related Content

What's hot

Pwnable study basic_1
Pwnable study basic_1Pwnable study basic_1
Pwnable study basic_1Jinkyoung Kim
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장SeongHyun Ahn
 
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introductionJinkyoung Kim
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수Yeon Soo Kim
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임codenavy
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)NAVER D2
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해용 최
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터YunWon Jeong
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장SeongHyun Ahn
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것NAVER D2
 
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
[Kerference]  DEFCON CTF 풀어보기 - 박상석(KERT)[Kerference]  DEFCON CTF 풀어보기 - 박상석(KERT)
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)NAVER D2
 
[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리NAVER D2
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011Esun Kim
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회Byeongsu Kang
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012Esun Kim
 

What's hot (20)

Exp manager
Exp managerExp manager
Exp manager
 
Pwnable study basic_1
Pwnable study basic_1Pwnable study basic_1
Pwnable study basic_1
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
Web hacking introduction
Web hacking introductionWeb hacking introduction
Web hacking introduction
 
파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수파이썬을 배워야하는 이유 발표자료 - 김연수
파이썬을 배워야하는 이유 발표자료 - 김연수
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
파이썬 소개
파이썬 소개 파이썬 소개
파이썬 소개
 
[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)[Kerference] 시작! 리버싱 - 김종범(KERT)
[Kerference] 시작! 리버싱 - 김종범(KERT)
 
Python 생태계의 이해
Python 생태계의 이해Python 생태계의 이해
Python 생태계의 이해
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
 
파이썬 스터디 9장
파이썬 스터디 9장파이썬 스터디 9장
파이썬 스터디 9장
 
System+os study 5
System+os study 5System+os study 5
System+os study 5
 
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
[2017 Incognito] 스택 구조 분석을 통한 ROP 기법의 모든 것
 
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
[Kerference]  DEFCON CTF 풀어보기 - 박상석(KERT)[Kerference]  DEFCON CTF 풀어보기 - 박상석(KERT)
[Kerference] DEFCON CTF 풀어보기 - 박상석(KERT)
 
[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리[2017 Incognito] 시스템 해킹 기법 정리
[2017 Incognito] 시스템 해킹 기법 정리
 
System+os study 3
System+os study 3System+os study 3
System+os study 3
 
코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011코드 생성을 사용해 개발 속도 높이기 NDC2011
코드 생성을 사용해 개발 속도 높이기 NDC2011
 
Kth개발자 세미나 1회
Kth개발자 세미나 1회Kth개발자 세미나 1회
Kth개발자 세미나 1회
 
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
덤프 파일을 통한 사후 디버깅 실용 테크닉 NDC2012
 

Similar to Buffer Overflow PPT (OneTwo)

Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1Jinkyoung Kim
 
Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해Wonjun Hwang
 
Linux programming study
Linux programming studyLinux programming study
Linux programming studyYunseok Lee
 
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드GangSeok Lee
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장Sunggon Song
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나Daniel Shin
 
컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제Lee Sang-Ho
 
Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program경섭 심
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)Ubuntu Korea Community
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은jieun kim
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summitTae Young Lee
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점JaeHong Park
 
6. code level reversing
6. code level reversing6. code level reversing
6. code level reversingYoungjun Chang
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitorjieun kim
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습Seongho Park
 
3. windows system과 rootkit
3. windows system과 rootkit3. windows system과 rootkit
3. windows system과 rootkitYoungjun Chang
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfHo Jeong Im
 

Similar to Buffer Overflow PPT (OneTwo) (20)

Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
Process에 대한 이해
Process에 대한 이해Process에 대한 이해
Process에 대한 이해
 
Linux programming study
Linux programming studyLinux programming study
Linux programming study
 
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
[2012 CodeEngn Conference 07] manGoo - Exploit Writing Technique의 발전과 최신 트랜드
 
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
실무로 배우는 시스템 성능 최적화 8부 - 1,2,3장
 
백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나백업을 위한 USB운영체제 완료세미나
백업을 위한 USB운영체제 완료세미나
 
컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제컴퓨터과학개론 2014-2018년 기말시험 기출문제
컴퓨터과학개론 2014-2018년 기말시험 기출문제
 
Main Variable Program
Main Variable ProgramMain Variable Program
Main Variable Program
 
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
김성윤 - 우분투로 슈퍼컴 만들기 (2011Y03M26D)
 
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
20150509 unix v6로 배우는 커널의 원리와 구조 3 김지은
 
Ch19
Ch19Ch19
Ch19
 
Ropasaurusrex
RopasaurusrexRopasaurusrex
Ropasaurusrex
 
System+os study 1
System+os study 1System+os study 1
System+os study 1
 
2017 tensor flow dev summit
2017 tensor flow dev summit2017 tensor flow dev summit
2017 tensor flow dev summit
 
4.5부동소수점
4.5부동소수점4.5부동소수점
4.5부동소수점
 
6. code level reversing
6. code level reversing6. code level reversing
6. code level reversing
 
Ryu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic MonitorRyu with OpenFlow 1.3, Traffic Monitor
Ryu with OpenFlow 1.3, Traffic Monitor
 
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
[기술세미나 2차시] Ia 32 레지스터 분석 및 abex, crackme를 통한 stack 파라미터 전달 실습
 
3. windows system과 rootkit
3. windows system과 rootkit3. windows system과 rootkit
3. windows system과 rootkit
 
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdfOS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
OS Process, Thread, CPU Scheduling에 대해 알아봅시다.pdf
 

Buffer Overflow PPT (OneTwo)