윈도우 버퍼 오버플로우 익스플로잇 개발 - 3 윈도우 버퍼 오버플로우의 특징 유 닉스와 같은 시스템에서 버퍼 오버플로우는 리턴 주소를 대부분 추측에 의해 계산하는 경우가 많고, 여러 번 시도할 수 있을 경우 무차별 공격(brute forcing)을 하기도 한다. 반면 윈도우 시스템은 유닉스와는 조금 다른 양상을 보인다. 리턴 주소 문제 윈 도우 시스템의 경우 스택을 오버플로우시켰을 경우 해당 함수에서 리턴하는 시점에 ebx, esp 등과 같은 레지스터에 셸 코드가 들어 있는 버퍼의 주소가 들어 있는 경우가 많다. 따라서 대부분의 경우 리턴 코드는 ‘jmp esp’나 ‘jmp ebx’와 같은 바이트 문자열이 존재하는 위치로 정해진다. 이러한 코드가 존재하는 곳으로 일단 제어권을 넘길 수만 있다면 esp나 ..
윈도우 버퍼 오버플로우 익스플로잇 개발 - 2 스택 기반 버퍼 오버플로우가 발생하는 경우 스 택 기반 버퍼 오버플로우는 스택상의 어떠한 데이터 구조체의 데이터의 바운더리(boundary)를 넘어서 데이터를 저장하면서 스택을 조작할 수 있게 되는 현상을 말한다. 스택 기반 버퍼 오버플로우는 결국 프로그래머의 실수로 인한 프로그램 문제라고 할 수 있다. 이러한 버퍼 오버플로우는 주로 배열에 대해 strcpy와 같은 함수를 사용할 때 많이 발생한다. 예를 들어 다음과 같이 간단한 프로그램을 짠다. #include void function(char *str) { char buffer[10]; printf(“buffer original len:%d ”,sizeof(buffer)); strcpy(buffer,str..
윈도우 버퍼 오버플로우 익스플로잇 개발 - 1 지난 3월 발견된 ntdll.dll의 버퍼 오버플로우는 스택 기반 버퍼 오버플로우의 한 사례를 보여주는 보안 버그였다. 이번 컬럼에서는 ntdll.dll 사례를 바탕으로 윈도우 환경에서 어떤 방식으로 버퍼 오버플로우가 일어나는지 그 원리와 작동 방식을 살펴보면서 고질적인 버퍼 오버플로우를 막을 수 있는 방법에 대해 잠시 생각할 수 있는 시간을 마련해 보았다. 최 근 보안에 대한 관심이 높아짐에 따라 TV와 신문에는 보안 전문가를 자처하는 많은 사람이 나와 작금의 허술한 보안에 대해 실상을 폭로한다. 그러나 그 속내를 들여다보면 회사 광고나 자사 제품 광고를 위한 것인 경우가 많다. 이른바 ‘보안’은 하나의 ‘상품’에 불과해진 것이다. 많은 이들에게 보안은 아..
어떤 파일을 hex dump 하고 싶을 때가 있습니다. octal dump program인데 초기에는 8진수로만 제공되던 것이 hex 값도 출력할 수 있는 option을 지니게 되었지요. 가장 흔히 사용하는 방법은 od -tx1 입니다. type을 hex 로 하되 1 byte 씩 끊어서 출력하라는 것입니다. 1 을 여러가지로 바꾸어 시도해보세요. 이제 실시간 중에 memory 일부를 hex dump하고 싶을 때가 있는데, 사용하던 hex dump function을 소개하려고, 며칠간 틈틈이 수정하였습니다. 아래 소스를 보면 GL, GR 이런 말들이 나오는데, 이것은 charset을 정의할때 사용되는 말입니다. ksc5601 GR GL 등으로 검색해보세요. 보통 hexdump 옆에 print 된 내용을 덧..
- Total
- Today
- Yesterday
- Tech News
- Linux
- C#
- 막장로그
- humor
- Mabinogi
- 프리랜서로 살아남는 법
- Assembly
- 야마꼬툰
- console
- Battle
- Life News
- USB Lecture
- win32
- cartoon
- BadCode
- 나비효과
- medical
- network
- WDB
- diary
- Web Programming
- Information Processor
- 짤방 및 아이콘
- Reverse Engineering
- wallpaper
- 3D Engine
- Network Inspector
- Embedded System
- Military
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |