Presentation is loading. Please wait.

Presentation is loading. Please wait.

Canary value 스택 가드(Stack Guard).

Similar presentations


Presentation on theme: "Canary value 스택 가드(Stack Guard)."— Presentation transcript:

1 Canary value 스택 가드(Stack Guard)

2 INDEX UNDERSTANDING OF BUFFER OVERFLOW BASIC KNOWLEDGE OF STACK GUARD
SIMPLE ATTACK ON SIMPLE BOF with STACK GUARD

3 Buffer OverFlow ? 버퍼 : 변수에 데이터를 저장하기 위해 확보되는 임시 메모리 공간
Main() 함수는 스택 프레임이 구성되면서 지역변수, 스택 프레임 포인터, 인 자수, 인자값, 환경변수의 선형 순서로 스택에 배치됨 버퍼 오버플로우 : 입력값의 크기가 버퍼의 크기를 검증하지 않는 개발자의 실수를 기반으로 메모리에 확보된 버퍼의 크기를 초과해서 데이터를 저장함 으로써 버퍼 주변 공간 즉, 리턴 주소까지 덮어씌워지는 현상

4 SIMPLE VULnerable code (from ftz.11)

5 BuFFER Look like ? 코드에서 Char str[256] 버퍼 할당 공간은 $0x108 = 264Byte

6 Buffer looks like ?

7 WHAT IF WE ATTACK IT In THIS WaY ?

8 WHAT IS CANARY ? 광산에서 사용하던 카나리아에서 유래 출처 :

9 MAIn IDEA OF STACK GUARD
기본적인 버퍼 오버플로우 공격은 연속된 문자열을 버퍼 이상으로 입력하 여 리턴 주소를 변경하는 방식 연속적인 문자입력을 방지하는게 목적 -> 특정 값을 미리 지정

10 SIMPLE BUFFER PIC WITH SG

11 EASY EXAMPLE OF CANARY(feat. Ftz 13)
long i = 0x // 스택 가드 선언 char buf[1024] // 버퍼의 크기 1024 setreuid(3094, 3094) // level14 권한으로 실행되도록 설정 if(i != ){ } // 스택가드 변조 여부 검증

12 EASY EXAMPLE OF CANARY <main+3> sub &0x418, %esp
-> 1048의 버퍼 할당 i 의 논리적인 위치를 찾아야 됨!!

13 Address of long I <Main + 69> cmpl &0x1234567, 0xfffffff4($ebp)
char buf[1024]의 크기만큼 ‘A’ 삽입

14 ADDRESS Of LONG i 0x41 == ‘A’ => ~ 0xbffff8cf
0xbffff8d0으로부터 12바이트 떨어진 곳에 0x 이 위치 <- i에 미리 할당된 값

15 bUffer pic of this

16 HOW TO ATTACK THIS SIMPLE THING ?

17 STEP 1. 쉘 코드 환경변수에 삽입 리턴주소를 쉘 코드가 저장되어 있는 환경변수로 변경예정 <- 제대로 적재 되었음

18 STEP2. 환경변수의 주소값 찾기 Getenv라는 시스템 함수의 도움을 받아 Pwnwizit이라는 이름으로 올라간 환경변수의
주소값을 파밍

19 STEP3. BOF 취약점을 공격!!

20 STEP4. AFTER ATTACK

21


Download ppt "Canary value 스택 가드(Stack Guard)."

Similar presentations


Ads by Google